2012-09-28 94 views
3

我宣佈我的程序表,你可以看到如下:NOLOCK在臨時表

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

,我執行刪除功能:

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

我試圖避免在選擇鎖定語句以避免死鎖,即使我讀取髒數據。但是,「(nolock)」是不允許的。錯誤說:

關鍵字'與'附近的語法不正確。如果此語句是公用表表達式或xmlnamespaces子句,則前面的語句必須以分號結尾。

有沒有辦法在臨時表中應用NOLOCK?

回答

8

我懷疑是否你問問題:

擁有表變量(注意:它不是一個臨時表,但表變量),所以沒有點發出NOLOCK反對。您似乎希望針對目標表ActualTable發出nolock,但是要刪除HAS才能鎖定鎖。期。

處理大量刪除操作的常用技術是批量發佈行範圍的刪除操作。