我有一条 UPDATE
语句可以更新超过一百万条记录。我想将它们分批更新,每次更新1000或10000条。我尝试使用 @@ROWCOUNT
,但无法获得期望的结果。
仅用于测试目的,我选择了一个有14条记录的表,并设置了行计数为5。这个查询应该会更新5条记录、5条记录和4条记录,但实际上它只更新了前5条记录。
查询-1:
SET ROWCOUNT 5
UPDATE TableName
SET Value = 'abc1'
WHERE Parameter1 = 'abc' AND Parameter2 = 123
WHILE @@ROWCOUNT > 0
BEGIN
SET rowcount 5
UPDATE TableName
SET Value = 'abc1'
WHERE Parameter1 = 'abc' AND Parameter2 = 123
PRINT (@@ROWCOUNT)
END
SET rowcount 0
查询-2:
SET ROWCOUNT 5
WHILE (@@ROWCOUNT > 0)
BEGIN
BEGIN TRANSACTION
UPDATE TableName
SET Value = 'abc1'
WHERE Parameter1 = 'abc' AND Parameter2 = 123
PRINT (@@ROWCOUNT)
IF @@ROWCOUNT = 0
BEGIN
COMMIT TRANSACTION
BREAK
END
COMMIT TRANSACTION
END
SET ROWCOUNT 0
我在这里错过了什么?