3.5.2 FOR UPDATE句とFOR READ ONLY句の使い分け
カーソルを使用して検索中の表に対して行の更新,削除,及び挿入する場合,DECLARE CURSOR,又はALLOCATE CURSORでカーソルを定義する必要があります。このとき,UAPの処理内容に応じて,FOR UPDATE句(FOR UPDATE OF句を含む),及びFOR READ ONLY句を指定します。
カーソルを使用した行の更新又は削除をする場合,検索した行のほとんどを更新しないときは,排他オプションとしてWITH SHARE LOCKを指定するとよいです。排他オプションを省略した場合は,WITH EXCLUSIVE LOCKが仮定されます。
FOR UPDATE句(FOR UPDATE OF句を含む),及びFOR READ ONLY句は,指定によって処理効率が著しく低下する場合があるので注意が必要です。
FOR UPDATE句(FOR UPDATE OF句を含む),及びFOR READ ONLY句を指定するときに考慮する内容を次の表に示します。
FOR UPDATE句,及びFOR READ ONLY句を指定しない場合でも,更新(削除を含む)をするときは,1回目のFETCHで内部的な作業表を作成することがあるので,オーバヘッドを考慮する必要があります。
なお,検索だけをするときは内部的な作業表を作成しないので,オーバヘッドを考慮する必要ありません。