2012-10-11 139 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;