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. 查不到數據時, 則不會鎖表
