2011-06-20 66 views
0

誰能告訴我爲什麼不使用的第一SELECT語句中,即使在鎖行給定存儲過程返回結果重複下面的語句?奇怪的鎖定行爲2005

BEGIN TRANSACTION 

DECLARE @Temp TABLE (ID INT) 

INSERT INTO @Temp SELECT ID FROM SomeTable WITH (ROWLOCK, UPDLOCK, READPAST) WHERE SomeValue <= 10 
INSERT INTO @Temp SELECT ID FROM SomeTable WITH (ROWLOCK, UPDLOCK, READPAST) WHERE SomeValue >= 5 

SELECT * FROM @Temp 

COMMIT TRANSACTION 

SomeTable中的任何值針對SomeValue是5和10之間,將返回兩次,即使它們被鎖定在第一SELECT。我認爲整個交易都有鎖,所以我不希望查詢返回重複的結果。這是爲什麼發生?

回答