0

我正在研究这里的代码。

当我从那里剪切并粘贴以下代码时:

-- 正确指定连接条件的 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 表的结果?有什么开关吗?

4

1 回答 1

4

将 替换ROLLBACK TRAN;COMMIT TRAN;

目标表正在更改,因此您会看到正确的OUTPUT结果,但随后您将通过回滚事务在下一条语句中撤消它。

于 2013-01-11T21:52:45.760 回答