我有一个有两列的表。想要在两列上添加唯一约束。其中一列可以为空。
我尝试使用这种语法:
ALTER TABLE a ADD CONSTRAINT a_unq UNIQUE (a_id, (coalesce(a_name, '')));
"("
答案 0 :(得分:0)
在这种情况下,您不需要使用coalesce
。只需以通常的方式创建约束:
ALTER TABLE a ADD CONSTRAINT a_unq UNIQUE (a_id, a_name);
答案 1 :(得分:0)
如果您实际上需要解决方案位于PostgreSQL multiple nullable columns in unique constraint中:只需在表上创建UNIQUE索引,即使它不是表定义中声明的约束,它也会停止插入:
CREATE UNIQUE INDEX ex_12345 ON example
(coalesce(FIELD1, -1)
, coalesce(FIELD2, -1)
, coalesce(FIELD3, -1)
, coalesce(FIELD4, -1)
, coalesce(FIELD5, -1)
)
;