程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 關於mysql事務行鎖forupdate實現寫鎖的功能

關於mysql事務行鎖forupdate實現寫鎖的功能

編輯:關於MYSQL數據庫

       在電子商務裡,經常會出現庫存數量少,購買的人又特別多,大並發情況下如何確保商品數量不會被多次購買.

      其實很簡單,利用事務+for update就可以解決.

      我們都知道for update實際上是共享鎖,是可以被讀取的.但是如何在執行時,不被讀取呢.

      簡單來說:假設現在庫存為1,現在有A和B同時購買

      先開啟一個事務

      begin;

      select stock from good where id=1 for update;//查詢good表某個商品中stock的數量

      查出來後,在程序裡在判斷這個stock是否為0(你用什麼語言,不關我事)

      最後在執行

      update good set stock=stock-1 where id=1

      最後在

      commit

      但是這個時候B也是select stock from good where id=1 for update;注意:for update不能省略..這個時候會出現被鎖住,無法被讀取.

      所以這就能夠保證了商品剩余數量為1的一致性.

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved