如何在事务中处理相互依赖的查询?

时间:2015-02-22 08:04:48

标签: php mysql mysqli transactions

根据mysqli文档,我们可以通过调用$mysqli->autocommit(FALSE);来启动事务。将autocommit设置为false后,新行将不会插入到表中,直到我们手动提交它们。虽然这似乎是一种很好而简单的交易方式,但它在一些复杂的情况下失败了。
假设我们在第二个表中有两个带有外键的表,它依赖于第一个表中的主键。在交易期间不可能在第二个表中插入任何内容,因为它违反了外键策略 我应该如何通过事务处理查询之间的这种依赖关系?有没有办法提交查询,然后在将来出错时回滚它们? 我知道你可能会说在下一次交易查询中使用插入ID是可能的,但在我的情况下主键不是自动增量。它是来自外部世界的独特身份。 谢谢你的任何建议。

1 个答案:

答案 0 :(得分:0)

是。使用关键字:

START TRANSACTION [or] BEGIN
COMMIT
ROLLBACK

参考手册:

https://dev.mysql.com/doc/refman/5.0/en/commit.html