如何将唯一键应用于下表和需求?
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)作为新行,因为它在逻辑上是重复的记录。
现在,如何向该表添加唯一键或一些约束?
2条答案
按热度按时间qybjjes11#
保持
item_id < friend_id
这可以通过检查约束来完成。这将从(5,7)中删除冗余(7,5)。相应地,代码必须小心地保持这个顺序。
纯粹主义者可能会反对这种技术,认为应该建立friend\u id和item\u id的子关系。
pbwdgjma2#
有了一个更容易接受的解决方案,您总是可以通过使用触发器来模拟约束。
老实说,如果你能处理订购限制,那么@joop eggen的答案就更清楚了。