2012-10-11 140 views
-2

我有表stucture:MySQL的:重复键

table { 
`id` int(11) NOT NULL AUTO_INCREMENT, 
`content_type`, 
`protocol`, 
`content_id`, 
`hash` 
} 

我添加唯一键

alter table delivery add unique (content_type, protocol, content_id, hash); 

我怎样才能避免密钥的重复,如果运行查询的X倍;

例子:

UNIQUE KEY `content_type_2` (`content_type`,`protocol`,`content_id`,`hash`), 
UNIQUE KEY `content_type_3` (`content_type`,`protocol`,`content_id`,`hash`), 
UNIQUE KEY `content_type_4` (`content_type`,`protocol`,`content_id`,`hash`), 
UNIQUE KEY `content_type_5` (`content_type`,`protocol`,`content_id`,`hash`), 
UNIQUE KEY `content_type_6` (`content_type`,`protocol`,`content_id`,`hash`), 
UNIQUE KEY `content_type_7` (`content_type`,`protocol`,`content_id`,`hash`), 
UNIQUE KEY `content_type_8` (`content_type`,`protocol`,`content_id`,`hash`), 
UNIQUE KEY `content_type_9` (`content_type`,`protocol`,`content_id`,`hash`), 
UNIQUE KEY `content_type_10` (`content_type`,`protocol`,`content_id`,`hash`), 
UNIQUE KEY `content_type_11` (`content_type`,`protocol`,`content_id`,`hash`), 
UNIQUE KEY `content_type_12` (`content_type`,`protocol`,`content_id`,`hash`), 
+0

如果您没有设置密钥名称 - 您将得到上述结果 – glebaty

回答

0

使用一个命名约束,如果你尝试两次创建相同的约束应该失败:

ALTER TABLE delivery ADD CONSTRAINT my_constraint_name UNIQUE (content_type, protocol, content_id, hash);

+0

感谢您的回答! – glebaty

0

我相信你会检查是否表已包含您现在尝试添加的密钥(除非您使用的是已命名密钥),例如由(例如)SHOW INDEX

SHOW INDEXES FROM table1;