java併發操作同一條數據防止覆蓋更新 使用 樂觀鎖 悲觀鎖

樂觀鎖:

使用一個version字段標識數據的當前版本,每次更新數據的時候同時更新version = version + 1,where條件中需要加上version等於當前事務查詢出的數據的version,如果version的值已經改變,則更新失敗。

update t_goods   

set status=2,version=version+1  

where id=#{id} and version=#{version}; 

 

悲觀鎖:mysql行級鎖。排它鎖  for update

begin;

select id from user where id = 1 for update;//鎖住這條數據

end;

commit;//提交,釋放悲觀鎖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章