zoukankan      html  css  js  c++  java
  • SqlServer的更新锁(UPDLOCK)

    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的只能读,要是修改的话只能等这些语句完成后才能操作.从而保证的数据的修改正确.

  • 相关阅读:
    数据库优化
    Oracle语句集锦
    MVC Razor标签
    转载 操作MyBatis基础
    mysql sqlserver Oracle字符串连接
    Word
    部署IIS错误
    => 朗姆达表达式带入符号
    wcf例子01
    idea通过springboot初始化器新建项目
  • 原文地址:https://www.cnblogs.com/sunshch/p/2984073.html
Copyright © 2011-2022 走看看