您可以将主键指定为多个可互换的列吗?
我创建了一个存储用户之间友谊的表格:
CREATE TABLE FRIENDSHIPS (
AN_USER_ID TEXT NOT NULL,
ANOTHER_USER_ID TEXT NOT NULL,
PRIMARY KEY (AN_USER_ID, ANOTHER_USER_ID)
);
我不想拥有重复的友谊,所以如果有以下条目:' John',' Jack'我不想要杰克'约翰'待补充。
最好的方法是什么?谢谢!
答案 0 :(得分:1)
我无法通过UNIQUE
或PRIMARY KEY
约束找到任何方法。您可以使用触发器(除了PRIMARY KEY
约束):
CREATE TRIGGER insertCheck
BEFORE INSERT ON FRIENDSHIPS
BEGIN
SELECT RAISE(ROLLBACK, 'There can be only one combination.')
WHERE EXISTS (SELECT *
FROM FRIENDSHIPS
WHERE ANOTHER_USER_ID = NEW.AN_USER_ID AND AN_USER_ID = NEW.ANOTHER_USER_ID);
END;
答案 1 :(得分:0)
为确保您没有重复对,您可以添加第一个值必须始终小于第二个值的约束:
CREATE TABLE Friendships (
A_User_UD TEXT NOT NULL,
Another_User_ID TEXT NOT NULL,
PRIMARY KEY (A_User_ID, Another_User_ID),
CHECK (A_User_ID < Another_User_ID)
);