NOLOCK IN临时表

rab*_*ana 5 sql nolock

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

Declare @resultTable Table
(
  EmpId int,
  EmpStatusId int,
  CreatedDateTime datetime
)
Run Code Online (Sandbox Code Playgroud)

我执行删除功能:

Delete From ActualTable
Where Id = (Select EmpId from @resultTable with (nolock) where EmpStatusId = @tempId)
Run Code Online (Sandbox Code Playgroud)

我试图避免锁定在select语句中,以避免死锁,即使我读取脏数据.但是,不允许"with(nolock)".错误说:

关键字'with'附近的语法不正确.如果此语句是公用表表达式或xmlnamespaces子句,则必须以分号结束前一个语句.

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

Mit*_*eat 9

我怀疑你是否在问正确的问题:

你拥有表变量(注意:它不是临时表,而是表变量),所以没有必要对它发出一个nolock.你似乎想要针对目标表,ActualTable发出nolock,但是删除HAS来保存锁.期.

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