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. SQL事务回滚失败
- 2. 返回JSON后PHP PDO事务回滚
- 3. MySQL事务,回滚无效,(PHP PDO)
- 4. 我必须明确地用DateTimeZone重写PHP的DateTime吗?
- 5. 回滚sql事务,如果在c#中有任何失败
- 6. 休眠异常:事务回滚失败
- 7. CanCan权限 - 他们必须明确吗?
- 8. 如果PDO事务失败,如何重定向到页面?
- 9. 批量插入失败:必须指定明确的值
- 10. AssertionError:声明失败:copyAndReset必须返回一个零值副本
- 11. 如果事务回滚,CompassGps会回滚吗?
- 12. PHP PDO bindValue()失败
- 13. 我必须在PHP中声明我的变量吗?
- 14. 我必须明确地调用Destructor
- 15. 我必须在SensorManager类中明确调用unregisterListerner吗?
- 16. 使用vlfeat时,我必须明确释放内存吗?
- 17. 回滚,如果一个操作失败
- 18. PDO在提交/回滚之前丢失事务
- 19. MemoryStream必须明确处置?
- 20. MySQL:在事务失败时自动回滚
- 21. 如果语句失败,SQLite会自动回滚吗?
- 22. 如果flyway迁移失败,alter语句会回滚吗?
- 23. 设置失败时的回滚事件
- 24. C#在循环嵌套事务,但回滚,如果其中任何失败
- 25. 如果事务在SQL Server中失败,触发器是否会回滚?
- 26. SQL如何在批量插入失败时回滚事务
- 27. 我必须声明从父类继承的变量吗? (PHP 5.3.2)
- 28. 我必须重置webclient吗?
- 29. 明确地失败芹菜任务
- 30. PHP + MySQL - 事务不回滚
我相信事务只会在数据库级别停止,然后到期,但'rollback()'保存一些db资源应该是一个好习惯。 – 2010-01-04 19:46:07