加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SqlServer中的更新锁(UPDLOCK)

发布时间:2020-12-12 13:22:23 所属栏目:MsSql教程 来源:网络整理
导读:SqlServer中的更新锁(UPDLOCK) 2013-01-24 10:49 by 假面Wilson,? 3503 ?阅读,? 1 ?评论,?收藏,?编辑 UPDLOCK.UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。当我们用UPDLOCK来读取记录时

SqlServer中的更新锁(UPDLOCK)

2013-01-24 10:49 by 假面Wilson,?3503?阅读,?1?评论,?收藏,?编辑

UPDLOCK.UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。当我们用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改.

示例:

测试:

在另一个查询里:

BEGIN TRANSACTION

SELECT * FROM myTable?WITH (UPDLOCK)?WHERE Id in (1,2,3)

waitfor delay '00:00:10'?


update myTable?set [Name]='ZZ' where?Id in (1,3)
commit?TRANSACTION

在另一个查询里:
SELECT * FROM myTable?WHERE Id in (1,3)

可以马上查询到数据。

但如果要更新数据,必须等其他更新锁释放后才能执行。

update?myTable?set [Name]='ZZ' where?Id in (1,3)

这就说明,有时候需要控制某条记录在我读取后就不许再进行更新,那么我就可以将所有要处理当前记录的查询都加上更新锁,以防止查询后被其它事务修改.将事务的影响降低到最小

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读