我见过一个代码示例,其中有人做了
$dbh->rollback();
发生PDOException时。我认为在这种情况下数据库会自动回滚吗?
答案 0 :(得分:12)
如果您没有commit
没有rollback
已打开的交易,而且您的脚本中的任何地方都不是commited
,那么它将不是commited
(正如数据库引擎所见),并将在脚本结束时自动回滚。
不过,我(好吧,差不多)总是commit
或rollback
明确我打开的交易,所以:
$db->rollback()
时,他知道我希望事务回滚肯定,而且他不必考虑“ 他真的想要回滚,还是忘记了什么?后来在剧本中怎么办?“
数据库引擎没有“看到”PDOException:PHP在各种条件下抛出它 - 但数据库本身不会回滚任何东西: