。
我在过程中声明了一个表,您可以在下面看到:
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,但删除必须保留锁定。时期。
处理大型删除操作的常用技术是分批发出删除