Sql-Server

有沒有辦法刪除插入的數據,反之亦然?

  • April 12, 2022

我試圖在同一個查詢中插入數據,然後刪除。

我正在嘗試分塊刪除它,以免導致 LOG 問題:

DECLARE @BatchSize INT
SET @BatchSize = 100000

WHILE @BatchSize <> 0
BEGIN 
  
DELETE (@BatchSize) TABLE1 
WHERE   LogType = 'LOGTYPE'
AND     TABLE1.Id NOT IN (SELECT Id FROM TABLE2)
AND     TABLE1.Id IN     (SELECT Id FROM DifferentDB..TABLE3)
   
  SET @BatchSize = @@rowcount 
END

但是同樣的查詢,我想先在輔助數據庫中插入數據,然後再刪除。

是否可以在沒有觸發器的情況下實現?(插入,刪除…)

我也願意採用更好的分塊刪除方法,我只是憑記憶得到了那個。

這很容易做到。我之前在這裡寫過:簡化歸檔流程

範例查詢看起來像這樣:

INSERT 
   dbo.Votes_Archive
(
   Id, 
   PostId, 
   UserId, 
   BountyAmount, 
   VoteTypeId, 
   CreationDate
)
SELECT 
   v.*
FROM 
(
   DELETE v
       OUTPUT
           Deleted.Id,
           Deleted.PostId,
           Deleted.UserId,
           Deleted.BountyAmount,
           Deleted.VoteTypeId,
           Deleted.CreationDate
   FROM dbo.Votes AS v
   WHERE v.UserId = 190597
) AS v;

您確實需要小心 OUTPUT,因為如果您的目標是客戶端應用程序或表變數,則該計劃將被強制串列。

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