我有一張表格,我用它將兩個表格連接成一對多關係。PSQL對兩列的唯一約束
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也是如此。
解決方案是什麼?
'約束會火,因爲已經有一個與1,1和1,3.'你在哪裏看到這樣的行的行? –
@Ozzy - FYI,這不是PL/SQL,而是SQL。所有的DDL lk創建,更改等等都是SQL的一部分。 – Art
我意識到,但我指定psql incase有一個psql獨特的方式來編寫一個唯一的約束。更安全,然後對不起:) – Ozzy