-2

我有表结构:

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`),
4

2 回答 2

0

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

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

于 2012-10-11T14:30:09.497 回答
0

我相信您将不得不检查表是否已经包含您现在尝试添加的键(除非您使用命名键),通过(例如)SHOW INDEX

SHOW INDEXES FROM table1;
于 2012-10-11T14:32:29.777 回答