2015-03-16 4 views
1

У меня есть эта аудиторская таблица:Вставить в таблицу с подвыборкой?

create table audit(
    id int IDENTITY(1, 1) NOT NULL, 
    item_id int NOT NULL, 
    history text NOT NULL, 
) 

И у меня есть этот триггер:

create trigger tr_mytable_audit ON mytable after insert, update, delete 
as 
select * 
from inserted as i 
    full join deleted as d 
    on i.id = d.id 
for xml path('row'), root('rows') 

Как я могу вставить записи в таблице аудита, где item_id должна быть id столбца либо inserted или deleted и столбец history должен содержать xml для этой конкретной записи.

+0

Что XML? Есть ли столбец xml в таблице? –

+0

@TabAlleman Строка xml должна идти в столбце 'history'. –

ответ

0

Так вы имеете в виду это ?:

create trigger tr_mytable_audit ON mytable after insert, update, delete 
as 
INSERT INTO audit(item_id, history) 
SELECT i1.id, (
select * 
from inserted as i 
    full join deleted as d 
    on i.id = d.id 
where i.id=i1.id 
for xml path('row'), root('rows') 
) 
from inserted i1 
UNION 
SELECT i1.id, (
select * 
from inserted as i 
    full join deleted as d 
    on i.id = d.id 
where d.id=d1.id 
for xml path('row'), root('rows') 
) 
from deleted d1 
Смежные вопросы