我使用的是SQL Server 2014。
在我的程序中,我有MERGE
声明,我对此有疑问。
我的MERGE
语句具有以下简单结构:
MERGE dbo.T1 AS tgt
USING (SELECT ...) AS src ON ...
WHEN MATCHED THEN
UPDATE ...
WHEN NOT MATCHED THEN
INSERT ...
OUTPUT inserted.MyColumn
INTO @NewTable (MyColumnValue);
就像它为所有插入填充表格一样,我还需要它来填充另一个表以获取所有更新。
是可能的,如果是,那么请告诉我怎么做?
答案 0 :(得分:0)
不,不可能将结果指向两个表格。请参阅this question。
您可以使表格更宽,并在同一行输出inserted
和deleted
列:
MERGE dbo.T1 AS tgt
USING (SELECT ...) AS src ON ...
WHEN MATCHED THEN
UPDATE ...
WHEN NOT MATCHED THEN
INSERT ...
OUTPUT $action, inserted.col1, inserted.col2, deleted.col1, deleted.col2
INTO @NewTable (action, inserted_col1, inserted_col2, deleted_col1, deleted_col2);
然后您可以根据需要拆分@NewTable
。