就像这个问题一样,我一直在阅读PoEAA,想知道是否有可能将参照完整性检查推迟到在MySQL中提交之前。
我想在同一提交中插入一堆产品和相关产品时遇到了这个问题。即使在事务中,当我尝试插入related_products联接表时也会遇到约束错误。
related_products
如果有帮助,我正在使用PHP PDO进行数据库连接。
我会很感激您能提供的任何帮助。
看来我的答案在这里 …
通常,与MySQL一样,在插入,删除或更新许多行的SQL语句中,InnoDB逐行检查UNIQUE和FOREIGN KEY约束。在执行外键检查时,InnoDB在必须查看的子记录或父记录上设置共享的行级锁。 InnoDB立即检查外键约束; 该检查不会推迟到事务提交。根据SQL标准,默认行为应推迟检查。也就是说,仅在处理了整个SQL语句之后才检查约束。在InnoDB实现延迟约束检查之前,某些事情将是不可能的,例如使用外键删除引用自己的记录。
回到绘图板。