Sql-Server

如果我終止循環 INSERT 查詢,它會回滾自循環開始以來的所有插入還是僅回滾最後一次迭代?

  • March 17, 2020

如果以下循環查詢在循環過程中被終止,是否所有插入或僅目前一個回滾?

DECLARE @LoopId INT = 1;

WHILE (@LoopId < 100)
BEGIN
   INSERT INTO Table2
   SELECT Field1 
   FROM Table1
   WHERE ForeignKeyField = @LoopId

   SET @LoopId = @LoopId + 1;
END

如果以下循環查詢在循環過程中被終止,是否所有插入或僅目前一個回滾?

如果會話在循環之前已經啟動了事務,則所有語句都將回滾。但預設情況下,每條語句都在單獨的事務中執行,只有目前執行的 INSERT 會被回滾。

引用自:https://dba.stackexchange.com/questions/262078