首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server MERGE 語句實現資料同步與異動記錄完整教學

     編輯:關於SqlServer

MERGE 語句可在單一陳述式中完成 INSERT、UPDATE、DELETE 三種操作,是資料同步的利器。本文透過簡單範例示範核心語法與 OUTPUT 子句記錄異動細節。

MERGE 核心語法結構

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;

三種匹配情境對應操作

  • MATCHED:來源與目標皆存在 → UPDATE 同步欄位值。
  • NOT MATCHED BY TARGET:來源有、目標無 → INSERT 新增資料。
  • NOT MATCHED BY SOURCE:目標有、來源無 → DELETE 移除舊資料。

重要限制與注意事項

  • WHEN MATCHED 子句中僅允許 UPDATE 或 DELETE,且同類型子句最多出現一次。
  • WHEN NOT MATCHED 僅允許 INSERT。
  • 陳述式必須以分號 ; 結尾。
  • OUTPUT 子句可將執行動作與新舊值寫入記錄表,利於稽核追蹤。

執行結果驗證:ID 1-3 更新、ID 4-5 新增、ID 6-7 刪除,來源與目標資料達成完全一致。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved