鎖定我似乎在SQL Server 2008中缺少的東西WRT鎖這是我的情景:只讀在SQL Server
- BEGIN TRAN。
- 從表A中讀取以確保找到特定的行。
- 讀取時,在讀取的單行上放置一個只讀鎖。如果找不到,則拋出錯誤。
- 插入表B,其中包括對錶A的引用。
- 提交tran(釋放鎖)。
由於各種設計約束,在這個特殊的情況下,我無法創建一個關係來爲我管理這個。所以我必須用代碼來完成。
我不想將XLOCK或UPDLOCK表A作爲我正在處理的事務從它讀取,而不是寫入。但是,顯然我不希望其他更新/刪除引用的行。 所以我需要從外部的角度只讀鎖。
我不希望任何幻像讀取成爲可能。顯然,我不想要不同的行版本。
一旦TRAN承諾,這是罰款表A中修改,因爲觸發(後刪除),將空表B.參考
這是我有:
BEGIN TRAN
-- test
IF NOT EXISTS (
SELECT 1
FROM Table1
WITH (HOLDLOCK, ROWLOCK)
WHERE (ID = @ID)
) {throw}
{perform insert into Table2}
COMMIT TRAN
非常感謝約翰:) – IamIC 2010-12-13 20:30:42
不客氣,很高興幫助! – 2010-12-13 21:43:00