Postgres约束必须始终为1


Table A (
ValueA string,
ValueB int,
ValueC boolean,
Unique(valueA, valueB)
)

在所有包含值A的记录中,只有一个值C的真集。但是,如果没有值C为true的记录,我也希望约束失败。Ie对于值为A的所有记录都相等,必须将值C设置为true,并且不超过一次

案例1:"abc"的第一个插入在这种情况下有效
("abc",1,true(

情况2:"abc"的第一次插入失败
("abc",1,false(

案例3:第二次插入失败
('abc',1,true(

在所有包含值A的记录中,只有一个值C的真集。

您可以使用部分唯一索引:

create unique index on (valuea)
where valuec;

最新更新