はじめに
Oracleでレコードをロックするには、SELECT FOR UPDATEを使います。
select * from table for updateとすれば、テーブル全体をロックされて新規レコードの挿入もブロックできるかと思っていましたが、新規レコードの挿入はブロックできないようです。
INSERT/UPDATE/DELETEでNOWAITや待機時間を制限する指定はできない
UPDATEやDELETEはSELECT~FOR UPDATEを使用して該当する行をロック可能であるが、 INSERTの場合にはロックできない
SQLによる行ロックと表ロック - jitsu102の日記
図解入門よくわかる最新Oracleデータベースの基本と仕組み (How‐nual Visual Guide Book)
posted with amazlet at 15.01.11
水田 巴
秀和システム
売り上げランキング: 88,177
秀和システム
売り上げランキング: 88,177
テーブル全体をロックする
テーブル全体をロックするには、以下のクエリを使います。
LOCK TABLE table01 IN EXCLUSIVE MODE NOWAIT;
これで別プロセスによる新規レコードの挿入もブロックすることができます。