「Oracle入門」SELECT FOR UPDATEでレコード行をロックするサンプル

1. SKIP LOCKED でロック中の行を無視する

SELECT
  dbms_random.random() as rand
  , USER_NAME 
FROM
  USER_TBL 
WHERE
  SCORE > '80' 
  AND ROWNUM <= 100 
ORDER BY
  rand FOR UPDATE SKIP LOCKED

2.更新対象のレコードをロックする

SELECT
  * 
FROM
  USER_TBL FOR UPDATE

DataBase

Posted by arkgame