【发布时间】:2017-02-17 07:57:05
【问题描述】:
我有一个主键由 2 个字段组成的表 MySQL,如下所示
表中已经存在的记录是:
我发出的 INSERT 查询是:
当我运行查询时:
INSERT INTO `case_data`
VALUES ('WCD/2016/1000017', 2, '2016-09-29', 'WCD',***********************
显示的错误信息是:
[Err] 1062 - 键“PRIMARY”的重复条目“WCD/2016/1000017”
我是否违反了主键约束?
提前致谢。
【问题讨论】:
-
您只能在主键列中添加唯一字符串。此处“WCD/2016/1000017”已存在于表中,因此您不能在表中为主键列添加相同的字符串。
-
是的,你违反了主键约束。
-
@Vivek:如果我要将值 'WCD/2016/1000017' 更改为其他值,我为什么需要使用复合键?
-
您可以使用自动递增的多列“id”。这可能会解决您的问题。
-
同意。但是手动增加 'Iteration' 字段有什么问题呢?这就是 Composite Key 的概念:您可以保持 Key 的所有字段相同,而只更改 key 的一个字段。
标签: mysql composite-primary-key