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;