我一直在尝试找出是否有可能对两列的组合具有唯一约束。
具体来说,我有两列A和B。
我有下面这样的行
A B 1 2
然后我希望以下组合在插入时失败
A B 1 2 2 1
我尝试添加一个简单的约束
ALTER TABLE test ADD CONSTRAINT test_constraint UNIQUE (a, b);
但这让我(2, 1)在(1, 2)已经存在时插入。
(2, 1)
(1, 2)
这可能吗?还是在插入之前必须检查组合是否存在?
您可以使用表达式的索引来执行此操作:
create unique index unq_test_a_b on (test(least(a, b), greatest(a, b));
我不认为unique约束允许表达式(并且现在没有方便的Postgres进行测试),但这本质上是同一回事。
unique