mysql悲觀鎖的實現


https://www.cnblogs.com/laoyeye/p/8228467.html

參考原文鏈接, 

//0.開始事務

begin;/begin work;/start transaction; (三者選一就可以)

//1.查詢出商品信息

select status from table where id=1 for update;

//2.根據商品信息生成訂單

insert into table111 (id,goods_id) values (null,1);

//3.修改商品status為2

update table set status=2 where id=1;

//4.提交事務

commit;/commit work; (任選一種釋放鎖)

總結:

  1. 實現悲觀鎖利用select ... for update加鎖, 操作完成后使用commit來釋放鎖

  2. innodb引擎時, 默認行級鎖, 當有明確字段時會鎖一行, 如無查詢條件或條件

      字段不明確時, 會鎖整個表. 條件為范圍時會鎖整個表

  3. 查不到數據時, 則不會鎖表


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM