我在我的程序中声明了一个表,您可以在下面看到:
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?
我怀疑你是否在问正确的问题:
你拥有表变量(注意:它不是临时表,而是表变量),所以没有必要对它发出一个nolock.你似乎想要针对目标表,ActualTable发出nolock,但是删除HAS来保存锁.期.
处理大型删除操作的常用技术是在批量行范围中发出删除.
| 归档时间: |
|
| 查看次数: |
3262 次 |
| 最近记录: |