1
在SQLite3中,我有一個代表自反關係的表。這是我如何創建它:避免在SQL中以反身關係複製記錄
CREATE TABLE relationships (
id_relationship INT,
id_person_1 INT NOT NULL,
id_person_2 INT NOT NULL,
description VARCHAR2(300),
PRIMARY KEY(id_relationship),
FOREIGN KEY(id_person_1) REFERENCES people(id_person),
FOREIGN KEY(id_person_2) REFERENCES people(id_person),
CONSTRAINT relationship_not_repeated UNIQUE(id_person_1, id_person_2),
CONSTRAINT ids_not_equal CHECK(id_person_1 != id_person_2)
);
我想補充一個約束,以避免重複,因爲我有同樣的類型,像這樣的兩個外鍵會發生:
ID_RELATIONSHIP ID_PERSON_1 ID_PERSON_2 DESCRIPTION
--------------- --------------- ------------- ---------------
1 114 115 family
2 115 114 family
哇,我沒有意識到,這很容易和舒適。我不需要任何觸發器,因爲即時通訊使用Java。所以我唯一需要做的就是將最高的id放在id_person_1中,而另一個放在id_person_2中。非常感謝;) – ivan0590
我說錯了。我想說我會把id放在id_person_1中,而id_person_2是最大的id。再次感謝。 – ivan0590