1対多の関係でさらに2つのテーブルをリンクするために使用するテーブルがあります。
TableA
id
name
TableB
id
name
LinkTable
TableA_id
TableB_id
基本的に、TableA の 1 つに複数の 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 を持つことはできません。
解決策は何ですか?