【问题标题】:T-SQL - Release Lock in TransactionT-SQL - 释放事务中的锁
【发布时间】:2017-05-23 03:53:59
【问题描述】:

是否可以释放事务中某个表的锁?

这是一个例子:

查询窗口1:

BEGIN TRAN
   UPDATE table_1 SET col_1 = '1' WHERE ID = 1

   -- loop update (this takes time)
   WHILE EXISTS (SELECT * FROM table_2 WHERE col_1 = 'a')
   BEGIN
        UPDATE table_2 SET col_1 = 'b' WHERE col_1 = 'a' 
   END
COMMIT TRAN

查询窗口2:

SELECT * FROM table_1 WHERE ID = 1

是否可以在窗口 1 中的事务仍在运行时访问 table_1?

【问题讨论】:

    标签: sql sql-server tsql transactions locking


    【解决方案1】:

    你可以使用带有提示NOLOCK的“脏读”:

    SELECT * FROM table_1 WITH(NOLOCK)
    WHERE ID = 1
    

    阅读更多here

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 2010-09-28
    相关资源
    最近更新 更多