【问题标题】:NOLOCK IN temp tablesNOLOCK IN 临时表
【发布时间】:2012-09-28 03:33:44
【问题描述】:

我在我的程序中声明了一个表格,您可以在下面看到:

Declare @resultTable Table
(
  EmpId int,
  EmpStatusId int,
  CreatedDateTime datetime
)

我执行删除功能:

Delete From ActualTable
Where Id = (Select EmpId from @resultTable with (nolock) where EmpStatusId = @tempId)

我试图避免锁定 select 语句以避免死锁,即使我读取了脏数据。但是,不允许使用“with (nolock)”。错误说:

关键字“with”附近的语法不正确。如果该语句是公用表表达式或 xmlnamespaces 子句,则前面的语句必须以分号结束。

有没有办法在临时表中应用 NOLOCK?

【问题讨论】:

    标签: sql nolock


    【解决方案1】:

    我想问你是否问正确的问题:

    您拥有表变量(注意:它不是临时表,而是表变量),因此对它发出 nolock 是没有意义的。您似乎希望对目标表 ActualTable 发出 nolock,但要使用 delete HAS 来持有锁。期间。

    处理大型删除操作的常用技术是在行范围内批量发出删除。

    【讨论】:

      猜你喜欢
      • 2020-10-01
      • 2020-02-22
      • 2011-05-21
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 2021-07-05
      • 2014-02-02
      相关资源
      最近更新 更多