sql >> データベース >  >> RDS >> Mysql

PHP PDOトランザクションが失敗した場合、明示的にrollback()する必要がありますか?

    commitしない場合 rollbackではありません 開かれたトランザクションであり、commited スクリプトの後半では、commitされません。 (データベースエンジンから見た場合) 、スクリプトの最後に自動的にロールバックされます。


    それでも、私は(まあ、ほとんど) 常にcommit またはrollback 明示的に私が開くトランザクションなので、:

    • エラーのリスクはありません(スクリプトの後半で「誤って」コミットするなど)
    • コードはより読みやすく/理解しやすい$db->rollback()が表示されたとき 、彼は私がトランザクションを確実にロールバックしたいことを知っており、「彼は本当にロールバックしたかったのか、それとも何かを忘れたのか?そしてスクリプトの後半ではどうなるのか?」と考える必要はありません。 "


    DBエンジンはPDOExceptionを「認識」しません。さまざまな条件下でPHPによってスローされますが、データベース自体は何もロールバックしません:

    • いずれかのトランザクションがコミットされます
    • またはロールバックされます
    • または、明示的にコミットもロールバックもされていません。つまり、コミットされていません。つまり、変更されたものが「実際に」変更されていないことを意味します。



    1. pipを使用してPythonMySQLdbモジュールをインストールするにはどうすればよいですか?

    2. MySQL:すべての列がNULLである行の挿入を防ぐ方法は?

    3. 参照:MySQL拡張機能を使用した完璧なコードサンプルは何ですか?

    4. ER_NOT_SUPPORTED_AUTH_MODE-MySQLサーバー