2017-06-16 1 views
3

In meiner UPDATE Abfrage möchte ich die Werte deleted und inserted in separaten Datenbanktabellen speichern.Verwenden von sowohl INSERTED und DELETED von und OUTPUT

So muss meine Frage etwas wie folgt aussehen:

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

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

Jedoch habe ich in meinem zweiten INTO Stichwort ein Problem bin immer (falsche Syntax in der Nähe 'in'). Gibt es einen richtigen Weg, um das oben genannte zu erreichen?

Antwort

2

können Sie eine temporäre Tabelle verwenden, um die Ergebnisse zu halten und tun, um Ihre Einsätze nach etwa so:

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 Demo: http://rextester.com/BVSFRJ92976

Verwandte Themen