mysql - 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
是否可以设置如此复杂的限制规则?
解决方案
您可以CHECK
在创建 TABLE 时使用约束:
CREATE TABLE Persons (
ID int NOT NULL,
NAME varchar(255) NOT NULL,
POST_ID int,
GROUP_ID int,
CHECK (POST_ID IS NULL XOR GROUP_ID IS NULL)
);
推荐阅读
- r - 按 r 中的总收入计算每个月的收入
- python-3.x - 无法理解为什么函数中的基本循环获取字符串并打印字母直到字符串中的第一个数字不起作用
- sql - SQL 选择重复问题
- python-3.x - 尴尬的数组;根据索引列表从每一行中选择一个项目
- kotlin - DelegatedProperty 反射不适用于发布版本
- vue.js - Vue-Multiselect:第一次选择后如何自动填充其余输入字段?
- javascript - 要求用户使用 Javascript 和 html 输入名称
- git - 上游项目强制推送到 master 后,如何修复 git 子树?
- ios - 来自字符串的 UUID 始终为零
- python - 如何根据在两个不同列上设置的某些条件填充 pandas 数据框中的列?