両方向スクロール・カーソルの比較

両方向スクロール・カーソルが、他のプロセスまたはカーソルによってデータに加えられた変更を反映するかどうかは、カーソルがどのように宣言されているかによって異なります。 また、実行されるフェッチ操作のタイプによっても異なります。

カーソルを SENSITIVE STATIC として宣言すると、 他のプロセスまたはカーソルが基礎表に加えた変更を、 そのカーソルの結果表に反映させることができます。 これらの変更を反映させるかどうかは、カーソル指定の FETCH ステートメント実行時に 、SENSITIVE または INSENSITIVE を指定するかどうかによって決まります。 FETCH INSENSITIVE を指定すると、 他のプロセスまたは他のカーソルが基礎表に加えた変更は、結果表には反映されま せん。 FETCH SENSITIVE とすると、他のプロセスまたは他のカーソルが基礎表に加えた変更を結果表 に反映できます。

カーソルを SENSITIVE DYNAMIC として宣言すると、 他のプロセスまたはカーソルが基礎表に加えた変更は、 変更がコミットされた後に結果表に反映されます。

次の表は、センシティビティーの値とそれらが両方向スクロール・カーソルの結果表に及ぼす影響の要約です。

表 1. 両方向スクロール・カーソルの結果表に対するセンシティビティーの影響
DECLARE でのセンシティビティー指定 FETCH INSENSITIVE FETCH SENSITIVE
INSENSITIVE 基礎表に加えられた変更はどれも、結果表に反映されない。 このカーソルを使った位置付け UPDATE および DELETE ステートメントは 使用できない。 無効
SENSITIVE STATIC このカーソルが行った位置付けの更新および削除だけが 結果表に反映される すべての更新および削除が 結果表に反映される。 ほかのプロセスが行った挿入は、結果表に反映されない。
SENSITIVE DYNAMIC 無効 コミットされたすべての変更 (更新、削除、挿入、および行の 順序の変更を含む) が、結果表に反映される。