UPDLOCK.UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。
当我们用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改,
更改库存
begin tran
if(not exists(select 1 from 库存表 a with (updLock) join 销售明细 b on a.PId=b.PId where a.库存量<b.销售数量 ))
begin
waitfor delay '00:00:10'
update 库存表
set 库存量=库存量-b.销售数量
from 库存表 a join 销售明细 b on a.PId=b.PId
end
commit tran