コマンド解説書

CHANGE ISOLATION LEVEL

データベースのアクセス中に、DB2 が他の処理からデータを分離する方法を変更します。

許可

なし

必須接続

なし

コマンド構文

                                  .-CS--.
>>-CHANGE----+-SQLISL----+--TO----+-NC--+----------------------><
             '-ISOLATION-'        +-RR--+
                                  +-RS--+
                                  '-UR--'
 

コマンド・パラメーター

TO

CS
カーソル固定を分離レベルとして指定します。

NC
コミットを分離レベルとして指定しません。 DB2 ではサポートされていません。

RR
反復可能読み取りを分離レベルとして指定します。

RS
読み取り固定を分離レベルとして指定します。

UR
コミットされていない読み取りを分離レベルとして指定します。

使用上の注意

DB2 は、分離レベルを使用して、 データベース中でデータの保全性を維持します。

分離レベルは、並行して実行される他のアプリケーション処理によって加えられる変更から、 アプリケーション処理が分離 (シールド) される程度を定義します。

選択された分離レベルがデータベースでサポートされていない場合、 接続時に、サポートされているレベルまで自動的に調整されます。

タイプ 1 の接続でデータベースへ接続中に、 分離レベルを変更することは許可されていません (SET CLIENTを参照)。 バックエンド処理は、分離レベルを変更する前に以下のようにして終了しなければなりません。

   db2 terminate
   db2 change isolation to ur 
   db2 connect to sample

タイプ 2 の接続を使用した変更は許可されますが、 変更は同じコマンド行プロセッサーのバックエンド処理からのすべての接続に適用されるので、 注意が必要です。 ユーザーは、どの分離レベルが、接続されたどのデータベースに適用するか、 記憶している責任があるということを前提とします。

次の例では、SAMPLE データベースの作成に続いて、 ユーザーが DB2 対話式モードに入っています。

   update command options using c off
   catalog db sample as sample2
 
   set client connect 2
 
   connect to sample
   connect to sample2
 
   change isolation to cs
   set connection sample
   declare c1 cursor for select * from org
   open c1
   fetch c1 for 3 rows
 
   change isolation to rr
   fetch c1 for 2 rows

c1 がこの分離レベルに対応した準備状態になっていないため、SQL0514N エラーが発生します。

   change isolation to cs
   set connection sample2
   fetch c1 for 2 rows

c1 がこのデータベースに対応した準備状態になっていないため、SQL0514N エラーが発生します。

   declare c1 cursor for select division from org

カーソル c1 がすでに宣言されて開いているため、DB21029E エラーが発生します。

   set connection sample
   fetch c1 for 2 rows

この場合は、元のデータベース (SAMPLE) が元の分離レベル (CS) で使用されたので、 うまくいきます。

分離レベルの詳細については、SQL 解説書 を参照してください。

以下も参照

QUERY CLIENT


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]