SET TRANSACTION ISOLATION LEVELステートメント
構文
SET TRANSACTION ISOLATION LEVEL level
説明
SET TRANSACTION ISOLATION LEVEL 文を使用して、プログラムに必要なデフォルトのトランザクション分離レベルを設定します。
注意:このステートメントで設定した隔離レベルは、別のステートメントが発行されるまで有効です。 これは、InfoSphere® DataStage®コマンドや SQL トランザクションなど、セッション内のすべてのアクティビティに影響します。
SET TRANSACTION ISOLATION LEVEL文は、トランザクションが存在する間は実行できない。 これを実行しようとすると、ランタイム・エラー・メッセージが表示され、プログラムが失敗し、実行環境で開始されたすべてのコミットされていないトランザクションがロールバックされる。
レベルの構文は以下の通りである:
{n | keyword | expression}
levelは、0から4、または以下のキーワードのいずれかで評価される式である:
| 整数 | キーワード | 本取引への影響 |
| 0 | NO.ISOLATION | アップデートの紛失を防ぐ。 |
| 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