不锁定临时表



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

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

我执行删除功能:

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

我试图避免锁定 select 语句以避免死锁,即使我读取脏数据也是如此。但是,不允许使用"带(nolock)"。错误说:

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

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

我会质疑你问的问题是否正确:

您拥有表变量(注意:它不是临时表,而是表变量),因此没有必要对它发出nolock。您似乎希望针对目标表实际表发出 nolock,但删除必须保留锁定。时期。

处理大型删除操作的常用技术是分批发出删除

最新更新