【问题标题】:MySQL RESTRICT and NO ACTIONMySQL RESTRICT 和无操作
【发布时间】:2011-08-14 04:12:53
【问题描述】:

RESTRICTNO ACTION 之间的 MySQL FK 有什么区别?从文档来看,它们似乎完全相同。是这样吗?如果有,为什么两者都有?

【问题讨论】:

    标签: mysql foreign-keys cascade


    【解决方案1】:

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

    某些数据库系统已延迟 检查,NO ACTION 是延迟的 查看。在 MySQL 中,外键 立即检查约束, 所以NO ACTIONRESTRICT 是一样的。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        它们在 MySQL 中是相同的。

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

        CASCADE
        RESTRICT
        NO ACTION
        SET NULL
        SET DEFAULT
        

        NO ACTIONRESTRICT 的区别在于,根据标准,NO ACTION 是延迟的,而RESTRICT 是立即执行的。

        【讨论】:

          猜你喜欢
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          • 2020-08-01
          • 1970-01-01
          • 2018-08-29
          • 1970-01-01
          • 2011-12-04
          • 2011-07-30
          相关资源
          最近更新 更多