![MySQL,可以防止两个字段为 NULL 或 NOT NULL 吗?](https://linux22.com/image/726470/MySQL%EF%BC%8C%E5%8F%AF%E4%BB%A5%E9%98%B2%E6%AD%A2%E4%B8%A4%E4%B8%AA%E5%AD%97%E6%AE%B5%E4%B8%BA%20NULL%20%E6%88%96%20NOT%20NULL%20%E5%90%97%EF%BC%9F.png)
一个简单的表格:
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 的字段。enum
reference
这样,您可以轻松要求两者都非空,并且只能引用帖子 ID 或组 ID。