Postgresql:有条件的唯一约束

我想添加一个约束,强制只在一个表的一部分列的唯一性。

ALTER TABLE stop ADD CONSTRAINT myc UNIQUE (col_a) WHERE (col_b is null); 

上面的WHERE部分是一厢情愿的想法。

任何方式这样做? 还是应该回到关系图板?

PostgreSQL没有定义一个部分的(即有条件的) UNIQUE约束 – 但是,你可以创build一个部分唯一的索引 。 PostgreSQL使用唯一的索引来实现唯一的约束,所以效果是一样的,你只是不会看到information_schema列出的常量。

 CREATE UNIQUE INDEX stop_myc ON stop (col_a) WHERE (col_b is null); 

查看部分索引 。