MySQL的更新/删除“NO ACTION”与空白之间的区别

Posted

技术标签:

【中文标题】MySQL的更新/删除“NO ACTION”与空白之间的区别【英文标题】:Difference between MySQL's on update / delete "NO ACTION" vs blank 【发布时间】:2013-08-03 06:09:05 【问题描述】:

我读过这个问题: What is mysql's default ON DELETE behavior? 概述了不同选项的行为 - NO ACTION、RESTRICT、SET NULL 和 CASCADE 用于 MySQL 外键的更新/删除操作。

但是,还有另一种选择 - 只是空白。您可以将其设置为空白 - 它本身不是必填字段。

留空有什么作用?和设置为“NO ACTION”一样吗?

【问题讨论】:

这似乎更多是关于 phpmyadmin 的问题,而不是 mysql 本身。我不使用它,但我猜它相当于在 CREATE TABLE 命令中没有 ON DELETE 选项。 这不是关于 phpmyadmin 的问题 - 我也不使用它。该屏幕截图来自 Navicat,该选项在 Sequel Pro 中也可用。 很公平,但我的意思是菜单选项的含义取决于该 GUI 应用程序,而不是 RDBMS 本身。我只是错了你使用的是哪个 GUI 应用程序。 【参考方案1】:

InnoDB 外键处理的documentation 对此并不清楚。我还推测默认操作取决于引擎。

您很可能正在使用 InnoDB。

根据我自己的测试,不为外键指定ON 操作与NO ACTION 相同,对于InnoDB 也与RESTRICT 相同。它确实改变了SHOW CREATE TABLE 的输出。

【讨论】:

谢谢,是的,我正在使用 InnoDB

以上是关于MySQL的更新/删除“NO ACTION”与空白之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

Mysql中外键的 Cascade ,NO ACTION ,Restrict ,SET NULL

每当我尝试将外键约束设置为“NO ACTION”时,MySQL 工作台会自动将其设置为“RESTRICT”

mysql 设置外键 四大属性 CASCADE SET NULL NO ACTION RESTRICT 理解

如何删除Mysql中的空白行?

MySQL更新,跳过PDO的空白字段

如何删除系统生成的空白数据