我正在使用 mysqli 类在 PHP 中进行交易,我发现 autocommit() 的文档非常不完整。我从示例中推断,将 autocommit 设置为 false 会隐式执行“开始事务”。这个对吗?更重要的是,我看不到自动提交在哪里被重置为 true,我认为它应该是在事务完成后。这会在调用 commit() 或 rollback() 方法时自动发生吗?
问问题
2067 次
2 回答
2
它不会隐式执行 a 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 会话)。
于 2012-09-25T15:09:00.983 回答
0
对于以下查询,Autocommit(FALSE) 将保持为 false。执行提交语句后,自动提交将恢复为 true。不确定回滚是否相同。我已经使用这种方式几年了,它一直运行良好。
当您希望数据库保持一致性时,这是一种方法。
于 2018-02-27T05:02:22.587 回答