Oracle データベース (11g リリース 2) を使用しています。複数の接続が同時に次のことを行っていると想像してください。
- 取引開始
- 一意の値のテーブルに特定の値が存在するかどうかを確認する
- 値が存在しない場合は、挿入します
- トランザクションをコミットする
競合を防ぐ唯一の方法は、他の接続が現在 4 ステップ シーケンスを実行している間、接続が上記の 4 ステップ シーケンスを実行するのをブロックすることだと私には思えます。
トランザクションは、Oracle でこの種の広範なロック/ブロックを実現できますか?
このシナリオに対処する最善の方法について、回答とアドバイスをお寄せいただきありがとうございます。