优点: 允许读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改
当用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改
begin tran
select * from address WITH (UPDLOCK) where [Name]='Z'
waitfor delay '00:00:10'
update address set [Name]='ZZ'
commit tran
注意:
在另一个查询里:
如果同样要加更新锁,则会阻塞当前查询,直到其它连接释放更新锁.
如果不加更新锁则直接可以读取更新锁的记录.
这样做是对当前行的锁定,而不是整个表
如果对整个表锁定则严重影响了性能