このトピックでは、FOR UPDATE句について説明します。
構文
FOR UPDATE [WAIT n | NOWAIT | スキップロック]説明
FOR UPDATE句は、更新の場合と同様にSELECTステートメントによって取得される行をロックします。 これにより、現在のトランザクションが終了するまで、他のトランザクションによって行が変更または削除されるのを防ぎます。 選択した行でUPDATE、DELETE、またはSELECT FOR UPDATEコマンドを実行しようとするトランザクションは、現在のトランザクションが終了するまでブロックされます。 別のトランザクションからのUPDATE、DELETE、またはSELECT FOR UPDATEコマンドが1つ以上の選択された行をロックした場合、SELECT FOR UPDATEは前のトランザクションが完了するのを待ちます。 その後、SELECT FOR UPDATE は更新された行をロックして返します。 行が削除された場合、SELECT FOR UPDATEはロックして行を返しません。
FOR UPDATEは、返された行を個々のテーブル行 (集計など) で明確に識別できるコンテキストで使用できます。
FOR UPDATEオプションを使用して、ロック設定を指定できます。
WAIT nキーワードを含めて、SELECTステートメントが別のセッションによってロックされる行を待機する秒数 (または分数秒) を指定します。 DECIMAL 形式を使用して、小数点以下の秒数を指定します。 例えば、WAIT 1.5は、サーバに1.5秒待つように指示する。 小数点以下 4 桁まで指定できます。NOWAITキーワードを含めて、現在のセッションで行をロックできない場合にすぐにエラーを報告します。SKIP LOCKEDを含めて、可能であれば行をロックし、別のセッションによってロックされた行をスキップするようにサーバーに指示します。