データベースにいくつかのテーブルがあります。これらの各テーブルには、AuditLogテーブルへの変更をログに記録するために更新または削除時に起動するトリガーがあります。AuditLogテーブルには次のものが含まれます。
Id(PK、int、not null)Action(nchar(1)、not null)ActionDate(datetime、not null)ActionUser(nvarchar(100)、not null)AuditData(XML(。)、not null)
私のトリガーでは、次のようなことをしています。
DECLARE @auditBody XML
SET @auditBody = (select * from deleted as Root for xml auto, elements)
insert into dbo.AuditLog
(Action, ActionDate, ActionUser, AuditData)
select Case
When I.Id is not null then 'U'
Else 'D'
End as Action
,getdate() as ActionDate
,suser_name() as ActionUser
,@auditBody as AuditData
From
deleted D Left Join
inserted I on D.Id = I.Id
これはうまく機能しますが、私がやりたいのは、AuditDataxmlが次のようになるようにtablenameのRoot要素に属性を追加することです。
<Root tableName = "Person">
<Id>132</Id>
<FirstName>Ryan</FirstName>
...
</Root>
select from ... for xmlステートメントを使用してこれを実現する方法はありますか?