[英]PSQL unique constraint on two columns
我有一個表,用於將兩個表連接在一起,形成一對多的關系。
TableA
id
name
TableB
id
name
LinkTable
TableA_id
TableB_id
基本上,TableA中的一個可以具有許多TableB。 很簡單。 我現在遇到的問題是創建一個遵循此關系規則的約束:
LinkTable
TableA_id TableB_id
1 1
1 2
1 3
2 1
2 2
2 3
我想創建一個唯一約束,它將兩個列組合在一起作為唯一值。 所以在上面的鏈接表中,有了這個新的約束,我可以
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (1, 4);
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (1, 5);
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (2, 6);
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (3, 1);
With out any problems
And if I try to insert:
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (1, 1);
INSERT INTO LinkTable (TableA_id, TableB_id) VALUES (1, 3);
約束將觸發,因為已存在1,1和1,3的行。 如何創建postgres約束來執行此操作? 如果我為兩個行設置了一個唯一約束,那么我就不能有多個TableA_id相同而且多於一個TableB_id相同。
解決辦法是什么?
您是否嘗試將兩列設置為唯一?
ALTER TABLE LinkTable
ADD CONSTRAINT LinkTable_Unique UNIQUE (TableA_id, TableB_id);
create table LinkTable (
TableA_id integer REFERENCES TableA(id),
TableB_Id integer REFERENCES TableB(id),
UNIQUE(tableA_id, tableB_id)
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.