MySQL 键 'PRIMARY' 的重复项,但有点奇怪

MySQL Duplicate entry for key 'PRIMARY' but a bit more weird

我遇到了一个常见问题。我通读了 google,但我的问题有点奇怪。

我有一个 table 我使用这些主键:

ALTER TABLE `companies`
   ADD PRIMARY KEY(
     `name_employee`,
     `email`);

所以主键是 name_employee AND email 的组合。

例子的问题(我只给出了主键的插入,因为其他的不是主键并且按预期工作):

首次插入成功:

name_employee = 'Pavlos Pavlos'
email = 'company_Name@gmail.com'

第二次插入成功:

name_employee = 'John John'
email = 'company_Name@gmail.com'

第三次插入错误:

name_employee = 'Nick Nick'
email = 'company_Name@gmail.com'

弹出的错误:

Error: INSERT INTO companies (name, account_number, dateExp, credit_limit, amount_debt, balance, name_employee, id_employee, email, password) SELECT name, account_number, dateExp, credit_limit, amount_debt, balance, 'Nick Nick', '250', 'company_Name@gmail.com', 'pass' FROM companies WHERE email='company_Name@gmail.com' Duplicate entry 'Nick Nick-company_Name@gmail.com' for key 'PRIMARY'

但是 name_employee = Nick Nickemail = company_Name@gmail.com 没有另一行。

真正奇怪的是,它允许我用相同的 email 但不同的 name_employee 进行第二次插入,但它不允许我做同样的事情对于第三个等等插入。

有什么帮助吗?

编辑: 这是一项作业,我无法添加更多 keys/primary 键等。 此外,我在同一家公司需要很多员工,我们可以假设每个人的 name_employee 都是不同的,这就是我使用这些主键的原因。

这个查询

SELECT 
  name, account_number, dateExp, credit_limit, amount_debt, balance, 
  'Nick Nick', '250', 'company_Name@gmail.com', 'pass' 
FROM companies 
WHERE email='company_Name@gmail.com'

从 table companies 中选择行,其中 email 等于 'company_Name@gmail.com'。这适用于两行('Pavlos Pavlos''John John')。所以你试图插入 'Nick Nick' 两次。因此错误。

.