データベース - セーブポイントトランザクション、バッチ更新

トランザクション(トランザクション)
    すべてのステートメントが正常に実行された場合、トランザクションが(コミット)に提出することができます。ステートメントがエラーが発生した場合、トランザクションはロールバックされます。
    トランザクションに複数のコマンドの理由は、データベース(データベースの整合性)の整合性を確保することです。
    デフォルトで自動コミットモード、それがデータベースに送信された後に実行されるSQLコマンドで、データベース接続。注文が送信されると、それはロールバックすることができませんでした。
   
    、自動コミットモードconn.setAutoCommit(false)をオフにする必要がトランザクションを使用する場合は、
    文オブジェクトのステートメントSTAT = conn.createStatementを(作成);
    その後、任意にexecuteUpdateメソッドstat.executeUpdate(Command1を)に数回呼ばれる。
                                         stat.executeUpdate(command2の) ;
    ;すべてのコマンドを実行した後、conn.commitを()を提出するために呼び出されるメソッドをコミット
    、コール・ロールバックが()ロールバックconn.rollback()が表示され、間違った場合は、
   
セーブポイント
    セーブポイントを使用して、あなただけの時にロールバック操作にロールバックすることができますむしろ取引よりも、保存するためのポイントを開始。
    文のSTAT = conn.createStatement(); //から始まるトランザクション、ロールバック()フォールバックトランザクション開始
    stat.executeUpdateを(Command1)を、
    セーブポイントsvpt = conn.setSavepoint(); //ポイントにフォールバックポイント、ロールバック(svpt)を保存し
    、stat.executeUpdate(command2の)
    ...
    conn.commit();
    conn.releaseSavepoint(svptを); //ときポイントを保存する必要がないとき、それは解放しなければなりません
   
更新バッチを
    同時に一連のコマンドをバッチ操作として収集して提出すること。
    同じバッチ容器にINSERT、UPDATEすること、および操作を削除することができる、コマンドは、そのようなテーブルを作成し、テーブルを削除するように、データベース内に定義されてもよいです。しかし、バッチ処理でSELECTコマンドを追加すると例外がスローされます。
   
    最初の文オブジェクトの作成に必要なバッチ処理
    文STAT = conn.createStatementを();
    次に、addBatchメソッド呼び出し:
    文字列コマンド= "CREATE TABLEを...";
    stat.addBatch(コマンド);
    一方、(...){
        コマンド=「INSERT ... INTO(...を)「値;
        stat.addBatch(コマンド);
    }
    全体のバッチ更新を提出
    INT []はstat.executeBatchは()=カウント ; // のレコードの数の配列返し
   
    バッチ処理モードで誤差を補正する動作が、バッチは、単一のトランザクションとして実行されなければなりません。バッチ更新が失敗した場合は、バッチ操作の開始前の状態にロールバックする必要があります。
    まず、自動送信モードをオフにして、バッチ操作を収集し、操作が実行され、コミットされ、最終的に初期自動モードコミット復元:
    ブール= conn.getAutoCommit自動コミット();
    (falseに)conn.setAutoCommit;
    声明conn.getStatement STAT =();
    ...
    // stat.addBatch(...)を呼び出すキープ;
    ...
    stat.executeBatch();
    conn.commit();
    conn.setAutoCommit(自動コミット)。

おすすめ

転載: www.cnblogs.com/it-mh/p/11205533.html