MySQL RESTRICT和NO ACTION

时间:2011-04-27 20:12:23

标签: mysql foreign-keys cascade

RESTRICTNO ACTION之间的MySQL FK有什么区别?从文档中他们看起来完全一样。是这样的吗?如果是这样,为什么两者都有?

3 个答案:

答案 0 :(得分:42)

来自MySQL文档:https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html

  

某些数据库系统已推迟   检查,NO ACTION是延迟的   校验。在MySQL中,外键   约束立即检查,   因此NO ACTIONRESTRICT相同。

答案 1 :(得分:16)

它们在MySQL中完全相同。

在SQL 2003标准中,有5种不同的引用操作:

CASCADE
RESTRICT
NO ACTION
SET NULL
SET DEFAULT

NO ACTIONRESTRICT之间的区别在于,根据标准,NO ACTION会延迟RESTRICT立即行动。

答案 2 :(得分:15)

符合标准SQL语法。就像manual所说:(强调我的)

  

无操作:标准SQL 中的关键字。在MySQL中,相当于RESTRICT。如果引用的表中存在相关的外键值,则MySQL服务器拒绝父表的删除或更新操作。 某些数据库系统具有延迟检查,NO ACTION是延迟检查。在MySQL中,立即检查外键约束,因此NO ACTION与RESTRICT相同。