5
A
回答
9
如果你不commit
不rollback
打开的事务,这不是commited
脚本中任何以后,它不会是commited
(数据库引擎可见),并会自动回滚在脚本的结尾。
不过,我(好吧,几乎)总是commit
或rollback
明确的交易我打开,所以:
- 没有错误的风险(如commiting“错误”以后脚本)
- 的代码更易于阅读/理解:当一个人看到
$db->rollback()
,他知道我想要的交易回滚的肯定,而他没有想到“他才真正想要回滚,还是忘了什么?那么在剧本的后面呢?“
数据库引擎不能‘看到’PDOException:它是由PHP各种条件下抛出 - 但数据库本身不会回滚任何东西:要么
- 交易将提交
- ,或者它回滚
- ,或者它没有明确COMMITED也不回滚 - 这意味着它不是COMMITED - 这意味着什么被修改是不是“真的”修改
+1
是的,即使它自动回滚,只要脚本结束时让回滚发生就会非常糟糕。如果稍后有人更改了代码,则可能有错误。 – MindStalker 2010-01-04 20:06:42
相关问题
- 1. MySQL事务,回滚无效,(PHP PDO)
- 2. 我必须明确地用DateTimeZone重写PHP的DateTime吗?
- 3. AssertionError:声明失败:copyAndReset必须返回一个零值副本
- 4. 如果事务回滚,CompassGps会回滚吗?
- 5. 我必须在PHP中声明我的变量吗?
- 6. 我必须明确地调用Destructor
- 7. PDO在提交/回滚之前丢失事务
- 8. MemoryStream必须明确处置?
- 9. MySQL:在事务失败时自动回滚
- 10. 如果flyway迁移失败,alter语句会回滚吗?
- 11. 如果语句失败,SQLite会自动回滚吗?
- 12. 设置失败时的回滚事件
- 13. C#在循环嵌套事务,但回滚,如果其中任何失败
- 14. 如果事务在SQL Server中失败,触发器是否会回滚?
- 15. SQL如何在批量插入失败时回滚事务
- 16. PHP PDO连接失败
- 17. 我必须重置webclient吗?
- 18. PHP事务不回滚
- 19. 使用PDO时,我必须禁用魔术引号吗?
- 20. 当提交失败时,Nhibernate是否会回滚事务?
- 21. 显式事务回滚是否必需?
- 22. 如果SMTP登录失败,PHP Mailer必须显示错误信息?
- 23. 如果声明失败
- 24. 我必须使用BreezeController吗?
- 25. 我必须致电sendResponse吗?
- 26. 骡子事务回滚范围出现失败
- 27. 我必须关闭FileInputStream吗?
- 28. 斯卡拉spec2 object.productID必须_ ==“123”失败
- 29. 为什么我明确地必须在这里声明函数?
- 30. Spring声明性事务不回滚
我相信事务只会在数据库级别停止,然后到期,但'rollback()'保存一些db资源应该是一个好习惯。 – 2010-01-04 19:46:07