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);
查看部分索引 。