CLI の手引きおよび解説書

複数のロールバックでカーソルを保留する

トランザクション管理上の複雑な問題を処理することが必要なアプリケーションでは、同一のデータベースに複数の並行接続を確立するとよい場合があります。 DB2 CLI 内の各接続にはそれぞれトランザクション有効範囲があり、 1 つの接続で実行されるアクションが他の接続のトランザクションに影響を与えることはありません。

たとえば、ある 1 つのトランザクション内でオープンされているすべてのカーソルは、問題が起こってそのトランザクションがロールバックされるとクローズしてしまいます。カーソルは一つのトランザクション内に個別にあり、あるステートメントでロールバックがなされても他のステートメントのカーソルには影響しないので、アプリケーションは同一のデータベースに複数の接続を使用して、オープンしているカーソルを持つ複数のステートメントを分離しておきます。

複数の接続を使用するということは、ある接続でクライアントにデータを渡してから、別の接続でサーバーにそのデータを戻すということを意味します。たとえば、

接続 #1 で、ラージ・オブジェクト列にアクセスしており、かつラージ・オブジェクト値の一部にマッピングする LOB ロケーターを作成していると仮定します。
接続 #2 で、LOB ロケーターにより表される LOB 値の一部を使用 (挿入) する場合、まず接続 #1 の LOB 値をアプリケーションに移動し、それから接続 #2 で作業中の表に渡す必要があります。そうする理由は、接続 #2 が接続 #1 の LOB ロケーターを認識しないためです。
接続が 1 つしかなければ、LOB ロケーターを直接使用することができます。ただし、トランザクションをロールバックするとすぐに、LOB ロケーターは失われてしまいます。


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