MySql:重复键

时间:2012-10-11 14:25:32

标签: 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`),

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我相信您必须检查表格是否已经包含您现在要添加的密钥(除非您使用的是命名密钥),(例如)SHOW INDEX

SHOW INDEXES FROM table1;