MySQL错误:重复输入' xxx'用于主键

时间:2016-10-08 12:04:43

标签: mysql composite-primary-key

我有一个带有主键的表MySQL由2个字段组成,如下所示

Script showing Primary Key

表中现有的记录是:

Existing Records

我发出的INSERT查询是:

The Query

当我运行查询时:

INSERT INTO `case_data` 
VALUES ('WCD/2016/1000017', 2, '2016-09-29', 'WCD',***********************

显示的错误信息是:

  

[Err] 1062 - 重复录入' WCD / 2016/1000017'关键' PRIMARY'

我是否违反了主键约束?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以检查您尝试插入的行的主键值是否已存在于表中:

SELECT COUNT(*)
FROM case_data
WHERE caseno = 'WCD/2016/1000017' AND iteration = 2;

如果它返回0,那么您将不会违反PK约束并且可以安全地插入您想要的行(假设没有其他检查,触发器,约束)。否则它将返回1,这意味着您已经在这些列中有一行包含值,因此您将违反不允许的行的唯一性。

当它返回0时,只需发出INSERT命令。另外,请记住在语句中指定列表,以确保VALUES中的每个值都放在目标表的右列中:

INSERT INTO case_data (caseno, iteration, casedate, casetype)
VALUES ('WCD/2016/1000017', 2, '2016-09-29', 'WCD');

如果它们不包含逗号或空格等替代字符,请避免在列和表名称周围使用反引号。这将使您的代码更具可读性,并且肯定会加快您的写作时间。