commit
しない場合 rollback
ではありません 開かれたトランザクションであり、commited
スクリプトの後半では、commit
されません。 (データベースエンジンから見た場合) 、スクリプトの最後に自動的にロールバックされます。
それでも、私は(まあ、ほとんど) 常にcommit
またはrollback
明示的に私が開くトランザクションなので、:
- エラーのリスクはありません(スクリプトの後半で「誤って」コミットするなど)
- コードはより読みやすく/理解しやすい :
$db->rollback()
が表示されたとき 、彼は私がトランザクションを確実にロールバックしたいことを知っており、「彼は本当にロールバックしたかったのか、それとも何かを忘れたのか?そしてスクリプトの後半ではどうなるのか?」と考える必要はありません。 "
DBエンジンはPDOExceptionを「認識」しません。さまざまな条件下でPHPによってスローされますが、データベース自体は何もロールバックしません:
- いずれかのトランザクションがコミットされます
- またはロールバックされます
- または、明示的にコミットもロールバックもされていません。つまり、コミットされていません。つまり、変更されたものが「実際に」変更されていないことを意味します。