Sql-Server
有沒有辦法刪除插入的數據,反之亦然?
我試圖在同一個查詢中插入數據,然後刪除。
我正在嘗試分塊刪除它,以免導致 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,因為如果您的目標是客戶端應用程序或表變數,則該計劃將被強制串列。