我遇到了一个常见问题。我查遍了谷歌,但我的问题有点奇怪。
我有一个表,我使用这些主键:
ALTER TABLE `companies`
ADD PRIMARY KEY(
`name_employee`,
`email`);
因此主键是 name_employee
和 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 Nick
和 email = company_Name@gmail.com
。
真正奇怪的是,它允许我使用相同的电子邮件
但不同的name_employee
进行第二次插入,但它不允许我这样做第三个插入也是如此。
请问有什么帮助吗?
编辑: 这是一项作业,我无法添加更多键/主键等。 另外,我需要在同一家公司下有很多员工,我们可以假设每个员工的 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'
从表companies
中选择行,其中email
等于'company_Name@gmail.com'
。这对于两行('Pavlos Pavlos'
和 'John John'
)来说是正确的。因此,您尝试插入 'Nick Nick'
两次。因此出现错误。
.
关于php - MySQL 重复输入键 'PRIMARY' 但有点奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41600655/