我有一个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