在 MySQL 中引用完整性检查可以推迟到提交吗?
在 MySQL 中,引用完整性检查会立即执行,而不是推迟到事务提交。正如 MySQL 文档中所强调的,此限制会阻止某些操作,例如删除使用外键引用自身的记录。
推迟引用完整性检查的问题之前已经提出过,如参考了 PoEAA 问题。当在单个事务中将数据插入多个相关表时,就会出现问题。由于立即进行引用完整性检查,尝试插入连接表时可能会发生约束错误。
根据 SQL 标准,应推迟约束检查。然而,MySQL 中的默认存储引擎 InnoDB 目前在 SQL 语句中逐行强制执行。这意味着它在引用或父记录上设置共享行级锁,从而阻止事务继续进行。
因此,在以 InnoDB 作为存储引擎的 MySQL 中,目前不可能将引用完整性检查推迟到提交。这种限制给某些数据库操作带来了挑战,需要在设计数据库架构时仔细考虑。
以上是引用完整性检查可以推迟到 MySQL 中提交吗?的详细内容。更多信息请关注PHP中文网其他相关文章!