RESTRICT
和NO ACTION
之间的MySQL FK有什么区别?从文档中他们看起来完全一样。是这样的吗?如果是这样,为什么两者都有?
答案 0 :(得分:42)
来自MySQL文档:https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
某些数据库系统已推迟 检查,
NO ACTION
是延迟的 校验。在MySQL中,外键 约束立即检查, 因此NO ACTION
与RESTRICT
相同。
答案 1 :(得分:16)
它们在MySQL中完全相同。
在SQL 2003标准中,有5种不同的引用操作:
CASCADE
RESTRICT
NO ACTION
SET NULL
SET DEFAULT
NO ACTION
和RESTRICT
之间的区别在于,根据标准,NO ACTION
会延迟RESTRICT
立即行动。
答案 2 :(得分:15)
符合标准SQL语法。就像manual所说:(强调我的)
无操作:标准SQL 中的关键字。在MySQL中,相当于RESTRICT。如果引用的表中存在相关的外键值,则MySQL服务器拒绝父表的删除或更新操作。 某些数据库系统具有延迟检查,NO ACTION是延迟检查。在MySQL中,立即检查外键约束,因此NO ACTION与RESTRICT相同。