MySQL Error: Duplicate entry 'xxx' for Primary Key
MySQL Error: Duplicate entry 'xxx' for Primary Key
我有 table MySQL 主键由 2 个字段组成,如下所示
table 中已有的记录是:
我发出的 INSERT 查询是:
当我运行查询时:
INSERT INTO `case_data`
VALUES ('WCD/2016/1000017', 2, '2016-09-29', 'WCD',***********************
显示的错误信息是:
[Err] 1062 - Duplicate entry 'WCD/2016/1000017' for key 'PRIMARY'
我是否违反了主键约束?
提前致谢。
您可以检查您尝试插入的行的主键值是否已存在于 table:
SELECT COUNT(*)
FROM case_data
WHERE caseno = 'WCD/2016/1000017' AND iteration = 2;
如果它 returns 0
那么您将不会违反 PK 约束并且可以安全地插入您想要的行(假设没有额外的检查、触发器、约束)。否则它将 return 1
这意味着您已经有一行在这些列中包含值,因此您将违反不允许的行的唯一性。
当它 return 时 0
只需发出 INSERT
命令。此外,请记住在语句中指定您的列 tables 以确保您的 VALUES
中的每个值都被放入目标 table:
的正确列中
INSERT INTO case_data (caseno, iteration, casedate, casetype)
VALUES ('WCD/2016/1000017', 2, '2016-09-29', 'WCD');
如果您的列和 table 名称不包含逗号或空格等替代字符,请避免在它们周围使用反引号。这将使您的代码更具可读性,并且肯定会加快您的编写时间。
我有 table MySQL 主键由 2 个字段组成,如下所示
table 中已有的记录是:
我发出的 INSERT 查询是:
当我运行查询时:
INSERT INTO `case_data`
VALUES ('WCD/2016/1000017', 2, '2016-09-29', 'WCD',***********************
显示的错误信息是:
[Err] 1062 - Duplicate entry 'WCD/2016/1000017' for key 'PRIMARY'
我是否违反了主键约束?
提前致谢。
您可以检查您尝试插入的行的主键值是否已存在于 table:
SELECT COUNT(*)
FROM case_data
WHERE caseno = 'WCD/2016/1000017' AND iteration = 2;
如果它 returns 0
那么您将不会违反 PK 约束并且可以安全地插入您想要的行(假设没有额外的检查、触发器、约束)。否则它将 return 1
这意味着您已经有一行在这些列中包含值,因此您将违反不允许的行的唯一性。
当它 return 时 0
只需发出 INSERT
命令。此外,请记住在语句中指定您的列 tables 以确保您的 VALUES
中的每个值都被放入目标 table:
INSERT INTO case_data (caseno, iteration, casedate, casetype)
VALUES ('WCD/2016/1000017', 2, '2016-09-29', 'WCD');
如果您的列和 table 名称不包含逗号或空格等替代字符,请避免在它们周围使用反引号。这将使您的代码更具可读性,并且肯定会加快您的编写时间。