MySQL:对行组合设置唯一约束

时间:2014-06-25 11:04:10

标签: mysql database unique

我正在尝试对列的组合而不是单个列设置唯一约束。我有一张桌子,“标签”:

  • id(int,PK,AI,unsigned)
  • tag(varchar 25)
  • user_id(int,unsigned)

根据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'引用是什么?我没有具有该名称的列...)

1 个答案:

答案 0 :(得分:1)

您可能还在标记列上有唯一索引。使用

SHOW CREATE TABLE yourtb