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
。我認爲整個交易都有鎖,所以我不希望查詢返回重複的結果。這是爲什麼發生?