【发布时间】:2016-07-14 17:21:06
【问题描述】:
在数据透视表中,我需要在两个大整数字段上添加复合唯一键。
ALTER TABLE table_name ADD UNIQUE KEY `uk_field1_field2` (field1, field2);
查询报错
Duplicate entry '24014-1435' for key 'uk_field1_field2'
这是表格中包含这些值的最后一条记录,我猜是“24014-1435”。我已经确认这种组合是独一无二的。如果我删除该特定记录,则错误将指向具有相同错误的倒数第二行。在我刷新所有记录之前,我无法添加唯一键。
我可以在表上添加唯一键约束而不刷新所有行吗?
编辑
表:表名
栏目:
id bigint(20) 联合国 AI PK
created_at 时间戳
updated_at 时间戳
应用时间戳
field1 bigint(20)
field2 bigint(20)
field3 bigint(20)
状态 varchar(64)
示例数据
'2214', '2016-01-05 13:51:03', '2016-01-05 13:51:03', '2016-01-05 13:51:02', '1972', '24', '1155', 'applied'
'2215', '2016-01-05 13:51:05', '2016-01-05 13:51:05', '2016-01-05 13:51:03', '1972', '31', '2137', 'applied'
'2216', '2016-01-05 13:51:06', '2016-01-05 13:51:06', '2016-01-05 13:51:05', '1972', '33', '2487', 'on-hold'
'345', '2016-01-05 08:50:07', '2016-01-05 08:50:07', '2016-01-05 08:50:07', '1717', '54', '4602', 'on-hold'
【问题讨论】:
-
你有一些空值?
-
你能提供一个小例子(表定义和数据)来重现你的问题吗?
-
@scaisEdge 这两个字段在这里都不能为空。
-
您的示例适用于 sqlfiddle 和 MariaDB 10.0.19