我正在使用 Postgres 并且我有一个包含几列 bool 类型的表。
c1,c2,c3,c4 是列 (BOOLEAN)。
在我的模型中,我必须有其中之一,并且只有一个设置为 true。其他三个一定是假的。
我在表的其他列上添加了类似的检查(针对 null,而不是 bool)案例,如下所示:
ADD CONSTRAINT only_one_name_not_null CHECK (num_nonnulls(n1, n2, n3, n4) = 1)
我还没有找到做同样事情的解决方案,但使用 bool 类型。
有没有办法强制一个 bool 值为真,其他为假?
最佳答案
您可以转换为数字和计数:
check (( n1::int) + (n2::int) + (n3::int) + (n4::int) = 1)
注意:这假设值不是
NULL
.如果 NULL
可以使用类似的逻辑s 是允许的。他们大概会被视为虚假的。
关于sql - Postgres : one boolean true all other false check constraint?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61839577/