簡體   English   中英

跨多列的 UNIQUE 約束

[英]UNIQUE constraint across multiple columns

我需要一個跨越 2 列的UNIQUE約束,但在任何地方都允許 NULL 值。 我有這個 :

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

一些例子:

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

修改@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 &&);

這將適用於 NULLable 列

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM