MySQL Check约束:只有一列不为空

时间:2020-06-03 04:21:29

标签: mysql database constraints

此问题类似于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

1 个答案:

答案 0 :(得分:2)

尝试总结一个布尔表达式,该布尔表达式检查空列的总数:

CHECK (author_id IS NULL + manager_id IS NULL + editor_id IS NULL = 1)