我想要一个约束,在该约束中我确保至少有两列不为空。 基本上,从这两列中,一列必须包含值。
我怎么能有这样的约束呢? 在 liquibase 上有可能吗?如果没有,是否可以通过 SQL 或一些 postgres 特定的东西?
最佳答案
我喜欢用 num_nonnulls()
为此:
对于至少一个非空列:
check (num_nonnulls(col1, col2) >= 1)
对于恰好一个非空列:
check (num_nonnulls(col1, col2) = 1)
Liquibase 没有针对检查约束的内置更改(至少在社区版本中没有),因此您需要 <sql>
为此改变:
<sql>
alter table the_table
add constraint at_least_one_not_null
check (num_nonnulls(col1, col2) >= 1)
</sql>
https://stackoverflow.com/questions/66370232/