有什么好方法可以向 PostgreSQL 添加约束以检查一个列(来自一组列)是否包含非空值?
更新:我可能想使用Create Table和Alter Tablecheck
中详述的表达式。
更新:我正在查看可用的功能。
更新:仅作为背景,这是我目前使用的 Rails 验证逻辑:
validate :multi_column_validation
def multi_column_validation
n = 0
n += 1 if column_1
n += 1 if column_2
n += 1 if column_3
unless 1 == n
errors.add(:base, "Exactly one column from " +
"column_1, column_2, column_3 must be present")
end
end
需要明确的是,我在这里寻找的是 PSQL,而不是 Ruby。我只是想展示我正在使用的逻辑,因为它比枚举所有“真值表”的可能性更紧凑。