在SQL Server中,需要對數據操作進行先SELECT 之後UPDATE,對於這樣的操作,如果出現高併發,可能導致臟讀情況的發生。不能保證數據的同步。 解決方案是在事物中對錶進行加更新鎖: 事務一: 事務二: ...
在SQL Server中,需要對數據操作進行先SELECT 之後UPDATE,對於這樣的操作,如果出現高併發,可能導致臟讀情況的發生。不能保證數據的同步。
解決方案是在事物中對錶進行加更新鎖:
事務一:
begin tran declare @count int =0 select @count=[Count] from tb_name WITH(UPDLOCK,HOLDLOCK) where id=1 select @count as count1 waitfor delay '00:00:30' update tb_name set [Count]=@count+1 where id=1 commit tran select * from tb_name
事務二:
begin tran declare @count int =0 select @count=[Count] from tb_name WITH(UPDLOCK,HOLDLOCK) where id=1 select @count as count2 update tb_name set [Count]=@count+1 where id=1 commit tran select * from tb_name