SET TRANSACTION ISOLATION LEVEL ステートメント

構文

SET TRANSACTION ISOLATION LEVEL level

説明

SET TRANSACTION ISOLATION LEVEL ステートメントを使用すると、実行するプログラムに必要なデフォルトの分離レベルを設定できます。

注: このステートメントを使用して設定した分離レベルは、他のこのようなステートメントが実行されるまで効力を残します。これは、セッションのすべてのアクティビティー (InfoSphere® DataStage® コマンドおよび SQL トランザクションを含む) に影響を与えます。

SET TRANSACTION ISOLATION LEVEL ステートメントは、トランザクションが存在すると実行されません。 トランザクションが存在する場合に実行すると、ランタイム・エラー・メッセージが表示されてプログラムは失敗し、現在の実行環境で開始されまだコミットされていないトランザクションはロールバックされます。

level の構文は、次のとおりです。

{n | keyword | expression}

level は、0 から 4、または以下のキーワードのいずれか 1 つとして評価される式です。

表 1. トランザクションに対する分離レベルの効果
整数 キーワード このトランザクションへの影響
0 NO.ISOLATION 更新の消失を防止します。1
1 READ.UNCOMMITTED 更新の消失を防止します。
2 READ.COMMITTED 更新の消失とダーティー・リードを防止します。
3 REPEATABLE.READ 更新の消失、ダーティー・リード、および繰り返し不能な読み取りを防止します。
4 SERIALIZABLE 更新の消失、ダーティー・リード、繰り返し不能な読み取り、およびファントム書き込みを防止します。

1ISOMODE 構成パラメーターが 1 または 2 に設定されている場合は、更新の消失は防止されます。

次の例では、デフォルトの分離レベルを 3 に設定した上で分離レベル 4 でトランザクションを開始します。トランザクションが終了すると分離レベルは 3 に戻ります。

SET TRANSACTION ISOLATION LEVEL REPEATABLE.READ
PRINT "We are at isolation level 3."
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE
         PRINT "We are at isolation level 4."
         COMMIT WORK
END TRANSACTION
PRINT "We are at isolation level 3"

次の例では、トランザクション・レベルを設定する式を使用します。

PRINT "Enter desired transaction isolation level:":
INPUT TL
   SET TRANSACTION LEVEL TL
   BEGIN TRANSACTION
      .
      .
      .
   END TRANSACTION