如何将唯一键应用于下表和要求?
CREATE TABLE `friends` (
`item_id` VARCHAR(36) NOT NULL,
`friend_id` VARCHAR(36) NOT NULL,
);
这里,item_id
和 friend_id
都与相同的父字段(外键)相关。 friend_id
、item_id
按顺序出现也没关系,因为它的意思也是一样的。
例如,如果值 (5, 7) 出现在该行中,则不应接受 (7, 5) 作为新行 - 因为它在逻辑上是重复记录。
现在,如何向该表添加唯一键或一些约束?
最佳答案
保留item_id < friend_id
这可以通过 CHECK 约束来完成。
这从 (5, 7) 中删除了冗余 (7, 5)。
CHECK (item_id < friend_id)
CONSTRAINT UC_item_friend UNIQUE (item_id, friend_id)
相应地,代码必须小心保持这个顺序。
纯粹主义者可能会反对这种技术,认为应该建立friend_ids和item_ids的子关系。
关于MySQL 值对的唯一键/约束,无论它们位于哪一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50749159/