同时使用INSERTED和DELETED以及OUTPUT

时间:2017-06-16 20:41:07

标签: sql sql-server

在我的UPDATE查询中,我想将deletedinserted值存储到不同的数据库表中。

所以我的查询需要看起来像这样:

UPDATE A_TABLE
  SET table_column = 'something'
    OUTPUT deleted.*
    INTO audit.deleted_content

    OUTPUT inserted.*
    INTO audit.inserted_content
  WHERE blah = 'something else'

但是我的第二个INTO关键字('into'附近的语法不正确)会出现问题。有没有正确的方法来实现上述目标?

1 个答案:

答案 0 :(得分:2)

您可以使用临时表来保存结果,然后执行以下操作:

create table #audit (
    deleted_table_column varchar(32)
  , inserted_table_column varchar(32)
)

update A_table
  set table_column = 'something'
    output deleted.table_column, inserted.table_column
    into #audit
  where blah = 'something else'


insert into audit.deleted_content
select deleted_table_column from #audit;

insert into audit.inserted_content
select inserted_table_column from #audit;

rextester演示:http://rextester.com/BVSFRJ92976