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

标签 mysql sql foreign-keys restriction

一个简单的表格:

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

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

最佳答案

您必须在 CREATE 和 UPDATE 事件上使用 TRIGGERS,并在发生条件 (COALESCE(POST_ID, GROUP_ID) IS NULL OR (POST_ID IS NOT NULL AND GROUP_ID IS NOT NULL)) 时引发异常

这是您问题的答案: Either OR non-null constraints in MySQL

这是流程,根据MySql的版本稍微改变一下语法。

关于MySQL,可以防止两个字段为NULL或NOT NULL吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52097214/

相关文章:

sql - 使用 IIF 和 SIMILAR TO 在 INSERT 中将 char 转换为整数

mysql - SQL - 'char' auto_increment 问题

mysql - 如何查找具有引用特定 table.column 的外键并具有这些外键值的所有表?

python - Django反向查找外键不起作用

mysql - 错误代码: 1093.您无法指定目标表

mysql - 如何用同一列中的其他值更新 MySQL 行?

mysql - 根据时间戳列选择不同的最新 2 行

mysql - 具有多个父项的表的外键 CASCADE DELETE?

mysql - 如何使用mysql查询计算到期日期?

MySQL存储过程,如果存储过程的结果集为空,则更改一个变量并再次运行