DB 2データCOMMITとROLLBACK文とトランザクション境界の処理


作業ユニットとセーブポイント
ワークユニット(unit of work,UOW)は、アプリケーション・プロセスでリカバリ可能なトランザクションとも呼ばれます.(recoverable)操作シーケンスです.UOWの典型的な例は、単純な銀行振替取引です.つまり、あるアカウントから別のアカウントに資金を転送します.アプリケーションがあるアカウントから一定数の資金を減算すると、データベースに不一致の状態が発生します.2番目のアカウントに同じ数の資金を追加すると、この不一致は解消されます.これらの変更はすでに行われています.コミット後、他のアプリケーションが使用できます.
アプリケーションプロセスの最初のSQL文がデータベースに送信されると、UOWが暗黙的に開始します.同じアプリケーションの後続のすべての読み書き操作は、同じUOWの一部とみなされます.アプリケーションは、UOWを終了するために、適切なタイミングでCOMMITまたはROLLBACK文を発行することができる.COMMIT文は、このUOWで行われたすべての変更を永続化し、ROLLBACK文はこれらの変更を元に戻します.アプリケーションが正常に終了し、明示的なCOMMITまたはROLLBACK文が発行されない場合、UOWは自動的にコミットされます.UOWが終了する前にアプリケーションが意図的に終了すると、この作業ユニットは自動的にロールバックされます.
セーブポイント(savepoint)を使用すると、UOWを構成するオペレーションのサブセットを選択的にロールバックでき、トランザクション全体を失うことはありません.セーブポイントをネストし、アクティブなセーブポイントレベルをいくつか同時に持つことができます.これにより、アプリケーションは必要に応じて特定のセーブポイントにロールバックできます.あるUOWで3つのセーブポイントが定義されているとします.(A、B、C):
do some work;
savepoint A;
do some more work;
savepoint B;
do even more work;
savepoint C;
wrap it up;
roll back to savepoint B;


セーブポイントBにロールバックすると自動的にセーブポイントCが解放されますが、セーブポイントAとBは依然としてアクティブです.
 
PS:
COMMIT will not release table locks associated with cursors that have been declared WITH HOLD