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
。我认为整个交易都有锁,所以我不希望查询返回重复的结果。这是为什么发生?