我有一個UPDATE
聲明,它可以更新超過百萬條記錄。我想分批更新它們1000或10000.我嘗試使用@@ROWCOUNT
,但我無法獲得理想的結果。如何在SQL Server中更新數百萬行的大型表?
僅用於測試目的我所做的是,我選擇了包含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
缺少什麼我在這裏?
query2有什麼問題? –
請勿使用像這樣的ROWCOUNT。它已被棄用。 https://msdn.microsoft.com/en-us/library/ms188774.aspx –
@JuanCarlosOropeza命令成功完成,但實際上沒有任何記錄正在更新。 – CSharper