2013-01-11 22 views
1

我正在研究代碼hereTSQL MERGE命令似乎並未實際合併

當我下面的代碼從那裏砍正貼:

- 用正確指定的連接條件MERGE語句。

USE tempdb; 
GO 
BEGIN TRAN; 
MERGE Target AS T 
USING Source AS S 
ON (T.EmployeeID = S.EmployeeID) 
WHEN NOT MATCHED BY TARGET AND S.EmployeeName LIKE 'S%' 
    THEN INSERT(EmployeeID, EmployeeName) VALUES(S.EmployeeID, S.EmployeeName) 
WHEN MATCHED 
    THEN UPDATE SET T.EmployeeName = S.EmployeeName 
WHEN NOT MATCHED BY SOURCE AND T.EmployeeName LIKE 'S%' 
    THEN DELETE 
OUTPUT $action, inserted.*, deleted.*; 
ROLLBACK TRAN; 
GO 

它產生他們說的輸出,但它實際上並沒有改變TARGET表。我如何才能真正改變TARGET表的結果?是否有某種開關?

回答

4

COMMIT TRAN;

更換ROLLBACK TRAN;目標表被改變,因此,你看到的是正確OUTPUT但隨後你被回滾事務撤銷其在未來的聲明。

+0

非常好!謝謝!將會檢查時間是否過去。 – elbillaf