本文介紹FOR UPDATE子句。
文法
FOR UPDATE [WAIT n|NOWAIT|SKIP LOCKED]說明
FOR UPDATE 會使 SELECT 語句所檢索的行被鎖定,就像在進行更新一樣。這可以防止其他事務在當前事務結束前修改或刪除行;任何嘗試 UPDATE、DELETE 或 SELECT FOR UPDATE 選定行的事務都將被阻止,直到當前事務結束。如果來自另一個事務的 UPDATE、DELETE 或 SELECT FOR UPDATE 鎖定一個或多個選定行,則 SELECT FOR UPDATE 將等待第一個事務完成,然後鎖定並返回更新的行(如果行已刪除,則不返回任何行)。
FOR UPDATE 不能用於無法使用單個錶行(例如,使用彙總)明確標識返回行的上下文中。
使用 FOR UPDATE 選項可以指定鎖定喜好設定:
- 包含
WAIT n關鍵字可指定SELECT語句將等待另一個會話鎖定的行的秒數(或秒的小數部分)。使用小數形式指定秒的小數部分;例如,WAIT 1.5指示伺服器等待 1.5 秒。最多指定小數點右邊的 4 位元。 - 包含
NOWAIT關鍵字可在當前會話無法鎖定行時立即報告錯誤。 - 包含
SKIP LOCKED指示伺服器在可能的情況下鎖定行,並跳過已被另一個會話鎖定的行。