假設有個表單products ,裏面有id 跟name 二個欄位,id 是主鍵。
例1: (明確指定主鍵,而且有此數據,row lock)code
SELECT * FROM products WHERE id='3' FOR UPDATE;
例2: (明確指定主鍵,若查無此數據,無lock)blog
SELECT * FROM products WHERE id='-1' FOR UPDATE;
例2: (無主鍵,table lock)table
SELECT * FROM products WHERE name='Mouse' FOR UPDATE;
例3: (主鍵不明確,table lock)class
SELECT * FROM products WHERE id<>'3' FOR UPDATE;
例4: (主鍵不明確,table lock)表單
SELECT * FROM products WHERE id LIKE '3' FOR UPDATE;
樂觀所和悲觀鎖策略
悲觀鎖:在讀取數據時鎖住那幾行,其餘對這幾行的更新須要等到悲觀鎖結束時才能繼續 。
樂觀所:讀取數據時不鎖,更新時檢查是否數據已經被更新過,若是是則取消當前更新,通常在悲觀鎖的等待時間過長而不能接受時咱們纔會選擇樂觀鎖。數據