SQL Merge - 持久数据

时间:2015-02-26 21:50:53

标签: sql sql-server

我使用的是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);

就像它为所有插入填充表格一样,我还需要它来填充另一个表以获取所有更新。

是可能的,如果是,那么请告诉我怎么做?

1 个答案:

答案 0 :(得分:0)

不,不可能将结果指向两个表格。请参阅this question

您可以使表格更宽,并在同一行输出inserteddeleted列:

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