MERGE 語句可在單一陳述式中完成 INSERT、UPDATE、DELETE 三種操作,是資料同步的利器。本文透過簡單範例示範核心語法與 OUTPUT 子句記錄異動細節。
MERGE INTO @TargetTable AS T
USING @SourceTable AS S
ON T.ID = S.ID
WHEN MATCHED THEN
UPDATE SET T.DSPT = S.DSPT
WHEN NOT MATCHED BY TARGET THEN
INSERT VALUES(S.ID, S.DSPT)
WHEN NOT MATCHED BY SOURCE THEN
DELETE
OUTPUT $ACTION AS [ACTION],
Deleted.ID AS 'Deleted ID',
Deleted.DSPT AS 'Deleted Description',
Inserted.ID AS 'Inserted ID',
Inserted.DSPT AS 'Inserted Description'
INTO @Log;
UPDATE 同步欄位值。INSERT 新增資料。DELETE 移除舊資料。WHEN MATCHED 子句中僅允許 UPDATE 或 DELETE,且同類型子句最多出現一次。WHEN NOT MATCHED 僅允許 INSERT。; 結尾。OUTPUT 子句可將執行動作與新舊值寫入記錄表,利於稽核追蹤。
執行結果驗證:ID 1-3 更新、ID 4-5 新增、ID 6-7 刪除,來源與目標資料達成完全一致。