根据mysqli文档,我们可以通过调用$mysqli->autocommit(FALSE);
来启动事务。将 autocommit 设置为 false 后,新行将不会插入到表中,直到我们手动提交它们。尽管这似乎是一种很好且简单的交易方式,但在稍微复杂的情况下它会失败。
假设我们有两个表,第二个表中的外键依赖于第一个表中的主键。在事务期间不可能在第二个表中插入任何内容,因为这违反了外键策略。
我应该如何通过事务处理查询之间的这种依赖关系?有没有办法提交查询,然后在将来出现错误时回滚它们?
我知道您可能会说在事务的下一个查询中可以使用插入 ID,但在我的情况下主键不是自动递增的。这是来自外界的唯一ID。
感谢您的任何建议。
最佳答案
是的。使用关键字:
START TRANSACTION [or] BEGIN
COMMIT
ROLLBACK
查阅手册:
关于php - 如何处理事务中相互依赖的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28655808/