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

标签 php mysql mysqli transactions

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

最佳答案

是的。使用关键字:

START TRANSACTION [or] BEGIN
COMMIT
ROLLBACK

查阅手册:

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

关于php - 如何处理事务中相互依赖的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28655808/

相关文章:

mysql - 将 MySQL 服务器映射到故障转移群集 IP

mysql - WAMP 的 bitnami 版本忽略了 my.ini?

php - 通过php锁定表

php - UTF-8贯穿始终

php - Symfony2 表格 : Preselected value is lost in editAction

php - mysql join 当字段是表名和主键时

php - 将占位符属性添加到 Zend 2 中的日期输入

PHP MySQLI::bind_result 问题

php - mysql 联合或只加入一个查询

php - 我可以在PHP中混合使用MySQL API吗?