在PSQL中的可空列上添加唯一约束

时间:2017-12-07 04:41:51

标签: sql postgresql unique-constraint

我有一个有两列的表。想要在两列上添加唯一约束。其中一列可以为空。

我尝试使用这种语法:

ALTER TABLE a ADD CONSTRAINT a_unq UNIQUE (a_id, (coalesce(a_name, '')));

"("

附近的提示错误

2 个答案:

答案 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)
        )
        ;