我正在使用
mysqli类在
PHP中进行事务,我发现autocommit()的文档非常不完整.
我从示例中推断,将autocommit设置为false会隐式执行’begin transaction’.它是否正确?
更重要的是,我没有看到autocommit被重置为true的位置,我认为它应该在事务完成之后.调用commit()或rollback()方法时会自动发生这种情况吗? 最佳答案 它不会隐式执行START TRANSACTION,因为它执行ad-hoc事务:
http://dev.mysql.com/doc/refman/5.0/en/commit.html
使用autocommit(false)时,无论何时执行写入查询,都必须执行COMMIT才能在磁盘上永久更新.从那时起,对于该连接中的所有查询都是如此.使用autocommit(true),如果使用START TRANSACTION,运行更新,运行COMMIT,然后运行另一个更新,将立即应用这两个更新(即不需要第二个COMMIT).
autocommit永远不会重置为true,但它只是按会话设置(MySQL会话,而不是PHP会话).