php – 交易和例外
我想我会问,因为我不确定这个操作的结果是不是原始性质的交易.
当PHP中抛出异常停止执行时,如何处理数据库事务.是否会自动回滚,因为从PHP中删除了与数据库的连接,或者锁定是否仍然存在? 伪代码 TX Begin Select Balance Logic in PHP Exception Rollback Commit 注意:我知道最好的编码实践要求我在catch中回滚.这只是我想知道的一个行为问题. 解决方法
要确定MySQL在连接(会话)终止时如何处理事务,我们必须考虑是否启用自动提交模式.
>如果禁用自动提交并且在提交之前终止连接,则最后一次打开transaction is rolled back:
注意,启动事务在事务持续时间内隐式执行disable autocommit:
>如果启用了自动提交,则无论如何都会提交任何成功的数据修改.如果数据修改语句导致错误,那么显然不会提交更改(嗯,在这种情况下没有变化).因此,在这种情况下,终止连接不会有任何区别. 但是,正如@MarkBaker所指出的那样,如果检测到错误以使代码的所有读者都明白这一点,那么显式回滚事务仍然是个好主意.请记住,你自己并不清楚这是如何工作的,如果他们没有在你的代码中看到明确的回滚,那么其他php程序员可能会有同样的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |