両方向スクロール・カーソルの比較
両方向スクロール・カーソルが、他のプロセスまたはカーソルによってデータに加えられた変更を反映するかどうかは、カーソルがどのように宣言されているかによって異なります。 また、実行されるフェッチ操作のタイプによっても異なります。
カーソルを SENSITIVE STATIC として宣言すると、 他のプロセスまたはカーソルが基礎表に加えた変更を、 そのカーソルの結果表に反映させることができます。 これらの変更を反映させるかどうかは、カーソル指定の FETCH ステートメント実行時に 、SENSITIVE または INSENSITIVE を指定するかどうかによって決まります。 FETCH INSENSITIVE を指定すると、 他のプロセスまたは他のカーソルが基礎表に加えた変更は、結果表には反映されま せん。 FETCH SENSITIVE とすると、他のプロセスまたは他のカーソルが基礎表に加えた変更を結果表 に反映できます。
カーソルを SENSITIVE DYNAMIC として宣言すると、 他のプロセスまたはカーソルが基礎表に加えた変更は、 変更がコミットされた後に結果表に反映されます。
次の表は、センシティビティーの値とそれらが両方向スクロール・カーソルの結果表に及ぼす影響の要約です。
| DECLARE でのセンシティビティー指定 | FETCH INSENSITIVE | FETCH SENSITIVE |
|---|---|---|
| INSENSITIVE | 基礎表に加えられた変更はどれも、結果表に反映されない。 このカーソルを使った位置付け UPDATE および DELETE ステートメントは 使用できない。 | 無効 |
| SENSITIVE STATIC | このカーソルが行った位置付けの更新および削除だけが 結果表に反映される | すべての更新および削除が 結果表に反映される。 ほかのプロセスが行った挿入は、結果表に反映されない。 |
| SENSITIVE DYNAMIC | 無効 | コミットされたすべての変更 (更新、削除、挿入、および行の 順序の変更を含む) が、結果表に反映される。 |