我有一个表,我使用它以一对多的关系将另外两个表链接在一起。
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。
解决方案是什么?
发布于 2013-02-06 19:57:09
您是否尝试将这两个列都设置为唯一?
ALTER TABLE LinkTable
ADD CONSTRAINT LinkTable_Unique UNIQUE (TableA_id, TableB_id);发布于 2013-02-06 19:57:53
create table LinkTable (
TableA_id integer REFERENCES TableA(id),
TableB_Id integer REFERENCES TableB(id),
UNIQUE(tableA_id, tableB_id)
);https://stackoverflow.com/questions/14728451
复制相似问题