此问题类似于Check Constraint to Confirm Exactly One is not NULL,但对于MySQL和多列,MySQL自v8.0.16起支持检查。
例如,我有一个“发布”表,它具有三列,分别是author_id,manager_id和editor_id。这三列中只有一列不能为空。
如何在MySQL Check约束中实现这一目标?
也许像
not_null_sum = (author_id is not null ? 1 : 0) + (manager_id is not null ? 1 : 0) + (editor_id is not null ? 1 : 0)
not_null_sum should == 1
答案 0 :(得分:2)
尝试总结一个布尔表达式,该布尔表达式检查空列的总数:
CHECK (author_id IS NULL + manager_id IS NULL + editor_id IS NULL = 1)