sqlserver的updlock锁 (转)

UPDLOCK
  读取表时使用更新锁,而不使用共享锁,并将锁一直保留到语句或事务的结束。UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。
  这是SqlServer2000中对更新锁的说明.
  当我们用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的<zmkey class="zoomino-searchword" style="FONT-WEIGHT: bold; FLOAT: none; CURSOR: pointer; MARGIN-RIGHT: 3px; BORDER-BOTTOM: #ff6c00 2px dotted; cssFloat: none" offset="45" path="body &gt; div:eq(0) &gt; div:eq(3) &gt; table:eq(2) &gt; tbody:eq(0) &gt; tr:eq(0) &gt; td:eq(0) &gt; div:eq(0) &gt; #content:eq(0) &gt; br:eq(2)" anchortype="previous" jquery1240903274453="6">线程<img class="zoominoBgImage" style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0px; BORDER-TOP: medium none; DISPLAY: inline; PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: medium none; WIDTH: 12px; PADDING-TOP: 0px; BORDER-BOTTOM: medium none; HEIGHT: 14px; cssFloat: none" src="http://www.zoomino.cn/static-ox/images/z-keyword.gif"></zmkey>中是不能更改的只能等本线程的事务结束后才能更改,我如下示例:
  BEGIN TRANSACTION --开始一个事务
  SELECT Qty
  FROM myTable WITH (UPDLOCK)
  WHERE Id in (1,2,3)
  UPDATE myTable SET Qty = Qty - A.Qty
  FROM myTable AS A
  INNER JOIN @_Table AS B ON A.ID = B.ID
  COMMIT TRANSACTION --提交事务
  这样在更新时其它的线程或事务在这些语句执行完成前是不能更改ID是1,2,3的记录的.其它的都可以修改和读,1,2,3的只能读,要是修改的话只能等这些语句完成后才能操作.从而保证的数据的修改正确.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值