Mysql
如何設置唯一列組合
見下表:
CREATE TABLE IF NOT EXISTS `default_messages_users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `message_id` int(11) NOT NULL, `owner_user_id` int(11) NOT NULL, `to_user_id` mediumint(8) NOT NULL PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
我只需要設置列 message_id、owner_user_id、to_user_id 的一種可能組合,這意味著組合(例如)1、1、1 只能存在一次,因此不允許重複。我該怎麼做?在它們之間創建索引?
提前歡呼和感謝
一個
UNIQUE
約束(或唯一索引,mysql對約束和索引這兩個概念沒有太大區別)可以根據需要由多個列(2、3、…)組成。您的案例的範例具有由 3 列組成的約束:ALTER TABLE default_messages_users ADD CONSTRAINT Unique__message__owner_user__to_user --- you choose a sensible name --- for the constraint UNIQUE message_id_owner_user_id_to_user_id_UQ --- and the index (message_id, owner_user_id, to_user_id) ;