我有一個交易包括幾個表。在我從EDITED_TABLE
刪除了一些記錄後,我需要防止插入到TABLE_TO_BE_LOCKED
。目前我使用TABLOCKX
TABLOCK,HOLDLOCK是否足以防止INSERT?
DELETE EDITED_TABLE FROM EDITED_TABLE
left join TABLE_TO_BE_LOCKED with (TABLOCKX) on ....
WHERE ...
我需要防止插入新記錄到TABLE_TO_BE_LOCKED
但我想保留的可能性閱讀。 DELETE
TABLE_TO_BE_LOCKED
之後仍然沒有改變,這是顯式鎖定的原因。我可以使用TABLOCK, HOLDLOCK
而不是TABLOCKX
嗎?
注:
我知道How to lock a table for inserting in sql?。但是,結果不要這樣做,以防止主鍵中的重複。
爲什麼不直接使用'SELECT FOR UPDATE'和事務? – millimoose
@millimoose:在SQL Server中不存在 – gbn