mysql悲觀鎖怎么實(shí)現(xiàn)?

mysql悲觀鎖的方法:1、首先利用【select … for update】加鎖,操作完成后使用commit來(lái)釋放鎖;然后innodb引擎來(lái)默認(rèn)行級(jí)鎖;最后查不到數(shù)據(jù)時(shí),則不鎖表即可。

mysql悲觀鎖怎么實(shí)現(xiàn)?

mysql悲觀鎖的方法:

1、開(kāi)始事務(wù)

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

2、查詢出商品信息

select?status?from?table?where?id=1?for?update;

3、根據(jù)商品信息生成訂單

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

4、修改商品status為2

update?table?set?status=2?where?id=1;

5、提交事務(wù)

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

總結(jié):

  1、實(shí)現(xiàn)悲觀鎖利用select … for update加鎖, 操作完成后使用commit來(lái)釋放鎖;

  2、innodb引擎時(shí), 默認(rèn)行級(jí)鎖, 當(dāng)有明確字段時(shí)會(huì)鎖一行, 如無(wú)查詢條件或條件;

  ? ? 字段不明確時(shí), 會(huì)鎖整個(gè)表,條件為范圍時(shí)會(huì)鎖整個(gè)表;

  3、查不到數(shù)據(jù)時(shí), 則不會(huì)鎖表。

相關(guān)學(xué)習(xí)推薦:mysql視頻教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊5 分享