计算机学习积累

----转载有理,转载是想研究,想研究才会看,看了才会有感想,转载后我有时会写一些自己的感受
数据加载中……

sqlserver的updlock锁 (转)

UPDLOCK
  读取表时使用更新锁,而不使用共享锁,并将锁一直保留到语句或事务的结束。UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。
  这是SqlServer2000中对更新锁的说明.
  当我们用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改,我如下示例:
  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的只能读,要是修改的话只能等这些语句完成后才能操作.从而保证的数据的修改正确.

posted on 2009-04-28 16:04 freebird 阅读(327) 评论(0)  编辑  收藏 所属分类: 数据库


只有注册用户登录后才能发表评论。


网站导航: