简体   繁体   English

跨多列的 UNIQUE 约束

[英]UNIQUE constraint across multiple columns

I need a UNIQUE constraint which spans 2 columns, but allows NULL values anywhere.我需要一个跨越 2 列的UNIQUE约束,但在任何地方都允许 NULL 值。 I have this :我有这个 :

CREATE TABLE table_1{
  COLUMN a INT SET DEFAULT NULL,
  COLUMN b INT SET DEFAULT NULL
 -- <insert constraint here>
}

Some examples:一些例子:

a  b
1  2
3  4
valid
a  b
1  1
2  3
invalid
a  b
1  2
1  3
invalid
a  b
1  2
3  1
invalid
a  b
1  2
3  NULL
valid
a  b
1  2
3  NULL
4 NULL
NULL 5
valid

modification of @a_horse_with_no_name suggestion修改@a_horse_with_no_name 建议

create table table_1(a int default null, b int default null);
ALTER TABLE table_1
    ADD CONSTRAINT excl exclude using gist ( (array_remove(array[a, b],NULL)) with &&);

this will work fine with NULLable columns这将适用于 NULLable 列

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM