MySQL,可以防止两个字段为 NULL 或 NOT NULL 吗?

MySQL,可以防止两个字段为 NULL 或 NOT NULL 吗?

一个简单的表格:

ID, NAME, POST_ID, GROUP_ID

POST_ID 或 GROUP_ID 必须设置,但不能同时设置,也不能都不设置。因此,

有以下有效案例:

ID, NAME, POST_ID, GROUP_ID
x,   y,   1,       NULL
x,   y,   NULL,    4

并且无效的情况:

ID, NAME, POST_ID, GROUP_ID
x,   y,   NULL,    NULL
x,   y,   4,       4

这么复杂的限制规则可以设定吗?

答案1

我认为这是不可能的。我会在用户输入数据的前端捕获此类情况。此外,您也许可以将这两个字段替换为另外两个字段:

可能值为“post”或“group”category类型的字段,包含ID 的字段。enumreference

这样,您可以轻松要求两者都非空,并且只能引用帖子 ID 或组 ID。

相关内容