我正在使用Postgres,并且我有一个表,其中包含一些布尔类型的列。 c1,c2,c3,c4是(BOOLEAN)列。
在我的模型中,我必须拥有其中之一,并且只有一组设为true。其他三个必须为假。
我在表的其他列上添加了类似的检查(针对null,不是bool),例如:
a = email[0:email.index('@')]
我还没有找到一种解决方法,但是可以使用布尔类型。
是否可以将一个布尔值强制设置为true,而将另一个布尔值设置为false?
答案 0 :(得分:5)
您可以转换为数字并计数:
check (( n1::int) + (n2::int) + (n3::int) + (n4::int) = 1)
注意:这假定值不是NULL
。如果允许NULL
,则可以使用类似的逻辑。大概会将它们视为错误。