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テーブルを変更しません。TARGETテーブルの結果を実際に変更するにはどうすればよいですか?なんらかのスイッチはありますか?

4

1 に答える 1

4

をに置き換えROLLBACK TRAN; ますCOMMIT TRAN;

ターゲットテーブルが変更されているため、正しいOUTPUTことがわかりますが、次のステートメントでトランザクションをロールバックして元に戻しています。

于 2013-01-11T21:52:45.760 に答える