php - MySQL 重复输入键 'PRIMARY' 但有点奇怪

标签 php mysql primary-key composite-primary-key

我遇到了一个常见问题。我查遍了谷歌,但我的问题有点奇怪。

我有一个表,我使用这些主键:

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

因此主键是 name_employeeemail 的组合。

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

首次插入成功:

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

真正奇怪的是,它允许我使用相同的电子邮件但不同的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/

相关文章:

javascript - Bootstrap 可忽略的成功消息使用 ajax 时不会显示更长的时间

MySQL查询以根据两列的值获取所有重复项

entity-framework - Entity Framework 和 SQL Server View

php - MySQL - 计算行之间的差异

php - 存储到MySQL后base64错误

php - 使用 PHP 和 MYSQL 组合字段搜索

mysql - Laravel 条件查询不起作用

mysql - 弱实体的数据库建模

java - 如何从 Oracle 中的 JDBC 批量插入中获取生成的键?

sql-server-2012 - SQL Server更改主键数据类型