我正在尝试对列的组合而不是单个列设置唯一约束。我有一张桌子,“标签”:
根据this question的答案,我尝试通过以下方式设置组合约束:
ALTER TABLE `tags` ADD UNIQUE `unique_tag_user_combo` (`tag`, `user_id`);
到目前为止,这么好。但是当我来测试它时,通过查看是否允许我插入相同的标签两次但是使用不同的用户ID(应该),它会出错:
INSERT INTO `tags` VALUES (NULL, 'foo', '1'), (NULL, 'foo', '2')
... ...抛出
Duplicate entry 'foo' for key 'name_2'
请记住,标记+ user_id的组合上有唯一的约束,所以我的想法中的这个查询应该运行正常。如果我试图插入foo / 1两次,但不是foo / 1和foo / 2,我可以理解这个错误。我错过了什么?
(编辑 - 同样,错误消息中的'name_2'引用是什么?我没有具有该名称的列...)
答案 0 :(得分:1)
您可能还在标记列上有唯一索引。使用
SHOW CREATE TABLE yourtb