【发布时间】:2017-08-09 23:59:52
【问题描述】:
我有一个 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;
但是,我可以在数据库中插入重复记录。
问题:如何避免重复输入?
【问题讨论】: