Oracle では、(単一のデータベース接続で) 次のことが可能です。
- 単一の行 (row1) をロックします
- 次に、別の行 (row2) をロックします。
- 行 1 のロックを解放します (行 2 のロックを保持します)
- 別の行 (row3) のロックを取得する
- 行 2 のロックを解放します (行 3 のロックを保持します)
- 行3のロックを解放します
オラクルはさまざまな種類のロックをサポートしていることを認識しています(これは非常に役立つことがわかりました:http://broadh2o.net/docs/database/oracle/oracleLocks.html)ので、おそらく答えは選択されたロックの種類によって異なります。排他ロック、つまり、他の接続が行を更新するのを防ぐロックに興味があります。
単一のデータベース接続を使用して操作 1 ~ 6 を実行できるかどうかを知りたいです。行ごとに個別のデータベース接続を使用できます。ロックは COMMIT/ROLLBACK を使用して解放されるようです。そのため、単一の行でロックを解放することは不可能です。