知方可补不足~UPDLOCK更新锁的使用

回到目录

对于高并发的场合下,使用UPDLOCK可以有效的控制并发更新的问题,即当一个线程在进行with(UPDLOCK)并进行update时,另一个线程将被阻塞,它会等第一个线程更新结束后,才可以进行它里面的操作,使用UPDLOCK有效的避免了并发更新而产生的数据错误的问题,如累加操作,第二个线程需要等第一个线程累加结束后,才能进行下一步的累加动作,这是我们可以接受的。

测试代码如下

复制代码
BEGIN TRAN
SELECT  *
FROM    WebManageUsers WITH ( UPDLOCK )
WHERE   LoginName = 'zzl'
WAITFOR DELAY '00:00:10'
UPDATE  WebManageUsers
SET     RealName = 'zzlreal11'
WHERE   LoginName = 'zzl'
COMMIT TRAN
复制代码

代码运行后,再打开一个SQL客户端,进行下面代码的修改

复制代码
BEGIN TRAN
SELECT  *
FROM    WebManageUsers WITH ( UPDLOCK )
WHERE   LoginName = 'zzl'
WAITFOR DELAY '00:00:10'
UPDATE  WebManageUsers
SET     RealName = 'zzlreal22'
WHERE   LoginName = 'zzl'
COMMIT TRAN
复制代码

 回到目录

posted @   张占岭  阅读(2268)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2012-03-30 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~七 为DBContext对象应该作为其它实体操作类型的基类,并为它提供统一的提交动作
点击右上角即可分享
微信分享提示