樂觀鎖:
使用一個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;//提交,釋放悲觀鎖