在PHP的mysqli中,提交或回滚是否会在impliclitly中自动提交?

时间:2012-09-25 15:02:27

标签: php mysqli commit rollback autocommit

我正在使用mysqli类在PHP中进行事务,我发现autocommit()的文档非常不完整。 我从示例中推断,将autocommit设置为false会隐式执行'begin transaction'。它是否正确? 更重要的是,我没有看到autocommit被重置为true的位置,我认为它应该在事务完成之后。调用commit()或rollback()方法时会自动发生吗?

2 个答案:

答案 0 :(得分:2)

它不会隐式执行START TRANSACTION,因为它会执行临时交易:http://dev.mysql.com/doc/refman/5.0/en/commit.html

使用autocommit(false),每次执行写入查询时,必须COMMIT才能在磁盘上永久更新。从那时起,对于该连接中的所有查询都是如此。使用autocommit(true),如果您使用START TRANSACTION,请运行更新,运行COMMIT,然后运行其他更新,两个更新将立即应用(即没有秒需要COMMIT

autocommit永远不会重置为true,但它只是按会话设置(MySQL会话,而不是PHP会话)。

答案 1 :(得分:0)

对于以下查询,

Autocommit(FALSE)将保持为false。执行commit-statement后,自动提交将恢复为true。如果它做同样的事情,则不确定回滚。 我已经用这种方式工作了几年,而且一直都很好。

当您想要数据库中的一致性时,这是一种方法。