1
我一直在用SQL服務器運行許多'insert into'語句,有時候還會循環運行。sql取消查詢而不會將所有東西都還原
While
begin
insert into
end
通常需要很長時間才能完成。有時我必須在完成之前取消查詢。當我這樣做時,它將恢復它插入的所有內容。有沒有辦法,我只取消'插入'它現在正在運行,並保持已經插入在前一個循環?
非常感謝。
我一直在用SQL服務器運行許多'insert into'語句,有時候還會循環運行。sql取消查詢而不會將所有東西都還原
While
begin
insert into
end
通常需要很長時間才能完成。有時我必須在完成之前取消查詢。當我這樣做時,它將恢復它插入的所有內容。有沒有辦法,我只取消'插入'它現在正在運行,並保持已經插入在前一個循環?
非常感謝。
您只需明確定義從哪裏開始和結束交易,那麼它應該只有當它通過取消一半回滾「當前」的交易:
While
begin
BEGIN TRANSACTION;
insert into
COMMIT TRANSACTION;
end
確保您瞭解這方面的影響在應用數據之前保證數據的完整性。例如。每次開始批次時,都要檢查你上次的時間。
無論您在交易中做什麼,請記住,您現在必須自己檢查數據完整性。否則,如果多次啓動該批次,則由於多行插入同一行,您的數據可能會損壞。 – Adwaenyth
給答案增加了一個警告,顯然完全取決於'insert'實際做了什麼。它有多遠可能是不言而喻的,也可能是一團糟! – JeffUK
非常感謝。我在插入之前爲目標表創建了唯一的索引。所以重複不會發生。 – davidzxc574