一尘不染

在MySQL中,我可以将参照完整性检查推迟到提交之前

mysql

就像这个问题一样,我一直在阅读PoEAA,想知道是否有可能将参照完整性检查推迟到在MySQL中提交之前。

我想在同一提交中插入一堆产品和相关产品时遇到了这个问题。即使在事务中,当我尝试插入related_products联接表时也会遇到约束错误。

如果有帮助,我正在使用PHP PDO进行数据库连接。

我会很感激您能提供的任何帮助。


阅读 299

收藏
2020-05-17

共1个答案

一尘不染

看来我的答案在这里

通常,与MySQL一样,在插入,删除或更新许多行的SQL语句中,InnoDB逐行检查UNIQUE和FOREIGN
KEY约束。在执行外键检查时,InnoDB在必须查看的子记录或父记录上设置共享的行级锁。 InnoDB立即检查外键约束;
该检查不会推迟到事务提交。
根据SQL标准,默认行为应推迟检查。也就是说,仅在处理了整个SQL语句之后才检查约束。在InnoDB实现延迟约束检查之前,某些事情将是不可能的,例如使用外键删除引用自己的记录。

回到绘图板。

2020-05-17