Oracle for update skip locked 詳解

for update skip locked

結論:

  • 在加鎖之前判斷記錄是否已經被其它會話鎖定
    • 如果已經鎖定,那麼跳過該已鎖定的記錄
    • 如果沒有鎖定,那麼鎖定該未鎖定的記錄

驗證如下,基礎數據:

SELECT * FROM stu_info t WHERE t.id IN (1, 2);

在這裏插入圖片描述

session1:

-- 鎖住 id = 1 的所有記錄
SELECT * FROM stu_info t WHERE t.id = 1 FOR UPDATE;

在這裏插入圖片描述

session2:

-- 鎖住 id in (1, 2) 中未被鎖定的記錄 (跳過已經鎖定的記錄)
SELECT * FROM stu_info t WHERE t.id IN (1, 2) FOR UPDATE SKIP LOCKED;

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章