首页  >  文章  >  数据库  >  引用完整性检查可以推迟到 MySQL 中提交吗?

引用完整性检查可以推迟到 MySQL 中提交吗?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-09 20:28:02306浏览

Can Referential Integrity Checks Be Deferred Until Commit in MySQL?

在 MySQL 中引用完整性检查可以推迟到提交吗?

在 MySQL 中,引用完整性检查会立即执行,而不是推迟到事务提交。正如 MySQL 文档中所强调的,此限制会阻止某些操作,例如删除使用外键引用自身的记录。

推迟引用完整性检查的问题之前已经提出过,如参考了 PoEAA 问题。当在单个事务中将数据插入多个相关表时,就会出现问题。由于立即进行引用完整性检查,尝试插入连接表时可能会发生约束错误。

根据 SQL 标准,应推迟约束检查。然而,MySQL 中的默认存储引擎 InnoDB 目前在 SQL 语句中逐行强制执行。这意味着它在引用或父记录上设置共享行级锁,从而阻止事务继续进行。

因此,在以 InnoDB 作为存储引擎的 MySQL 中,目前不可能将引用完整性检查推迟到提交。这种限制给某些数据库操作带来了挑战,需要在设计数据库架构时仔细考虑。

以上是引用完整性检查可以推迟到 MySQL 中提交吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn