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

PDO複数のクエリ:トランザクションのコミットとロールバック

    はい、あなたのアプローチは正しいです。 Try...catchを使用する 場合によっては、よりクリーンで読みやすいコードにつながる可能性がありますが、全体的なアプローチは問題ありません。

    コードフラグメントがDBクエリを処理する関数からのものであり、それ以外のものではない場合は、おそらくアプローチを切り替えます。

    // Begin Transaction
    $this->db->beginTransaction();
    
    // Fire Queries
    if(!$query_one->execute()){
        $this->db->rollback();
        // other clean-up goes here
        return;
    }
    
    if(!$query_two->execute()){
        $this->db->rollback();
        // other clean-up goes here
        return; 
    }
    
    $this->db->commit();
    

    もちろん、returnを実行する前に、大量のクリーンアップを実行する必要がある場合は、 、その後、元のアプローチが優れています。特にこれらの場合、私はPDO::ERRMODE_EXCEPTIONの使用を検討します。これには、例外がキャッチされない限りトランザクションを自動的にロールバックするなど、いくつかの追加の利点があります。



    1. Oracle:RAISE_APPLICATION_ERRORを使用する状況はどうなっていますか?

    2. MySQLからBigQueryにデータを移行するためのベストプラクティス

    3. アプリケーションはデータベースに接続します

    4. ストアドプロシージャからC#asp.netで戻り値を取得する(構文の問題)