SqlServer中的更新锁(UPDLOCK)

Posted 那就让我这样吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SqlServer中的更新锁(UPDLOCK)相关的知识,希望对你有一定的参考价值。

优点: 允许读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改

当用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改

 

begin tran
select * from address WITH (UPDLOCK) where [Name]=‘Z‘
waitfor delay ‘00:00:10‘
update address set [Name]=‘ZZ‘
commit tran

 

注意:

在另一个查询里:
如果同样要加更新锁,则会阻塞当前查询,直到其它连接释放更新锁.
如果不加更新锁则直接可以读取更新锁的记录.

这样做是对当前行的锁定,而不是整个表

如果对整个表锁定则严重影响了性能

 

以上是关于SqlServer中的更新锁(UPDLOCK)的主要内容,如果未能解决你的问题,请参考以下文章

WITH (UPDLOCK,HOLDLOCK)提示与不同表类型

sqlserver中的锁

SqlServer2008R2中的NOLOCKHOLDLOCKUPDLOCKTABLOCKTABLOCKX区别

SQLServer并发问题,先SELECT后UPDATE,避免并发脏读情况解决

数据库锁的几种类型

悲观锁乐观锁