我有一個Relationships
表,我想一個綜合指數增加:防止重複項指數
CREATE UNIQUE INDEX idx_relationship_userid_friend_id on Relationships(user_id, friend_id);
我想防止重複條目user_id
和friend_id
列。即user_id
= 26和friend_id
= 46第二條目應該給出一個錯誤。
我跑上面的命令。當我再次運行該命令,我收到以下錯誤: Duplicate entry '36-50' for key 'idx_relationship_userid_friend_id'
當我看到在INDEXES
我下面的表格中看到的結構:
下表信息旁邊Create syntax
,我有以下代碼:
CREATE TABLE `Relationships` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`friend_id` int(11) DEFAULT NULL,
`status` int(11) DEFAULT '1',
`createdAt` datetime NOT NULL,
`updatedAt` datetime NOT NULL,
`user_id` int(11) DEFAULT NULL,
`app_common` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `owner_id` (`user_id`),
KEY `app_common` (`app_common`),
CONSTRAINT `Relationships_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `Users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `Relationships_ibfk_2` FOREIGN KEY (`app_common`) REFERENCES `AppCommon` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=latin1;
但是,我能夠在數據庫中插入重複記錄。
問:我怎樣才能避免重複的條目?
感謝。我試着運行下面的命令,'ALTER IGNORE TABLE Relationships ADD UNIQUE(user_id,friend_id)'。我有一個錯誤。我相信這是因爲該命令已被棄用。 – user1107173
你是對的,它在5.7中被刪除。 https://dev.mysql.com/worklog/task/?id=7395。在添加索引之前,您需要使用其他一些方法來擺脫重複項。 – Barmar