11
データベースに多数のテーブルがあります。これらの各テーブルには、更新または削除時にAuditLogテーブルへの変更を記録するためのトリガがあります。xmlのSQL Selectで生成されたxmlのルート要素に属性を追加するには
ID(PK、int型、NOT NULL) アクション(NCHAR(1)、NOT NULL) ActionDate(日時、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
これは素晴らしい作品、しかし、私は何をしたいのは、追加でAuditData xmlが次のようになるように、tablenameのRoot要素への属性:
<Root tableName = "Person">
<Id>132</Id>
<FirstName>Ryan</FirstName>
...
</Root>
select from ... from xmlステートメントでこれを行う方法はありますか?