我有一张表格,用于将另外两个表格建立1对多的关系。
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。
解决方案是什么?