gpt4 book ai didi

sql-server - 如何将属性添加到由 SQL 的 Select for xml 生成的 xml 的根元素

转载 作者:行者123 更新时间:2023-12-02 09:10:08 25 4
gpt4 key购买 nike

我的数据库中有许多表。每个表都有一个触发器,在更新或删除时触发,以将更改记录到 AuditLog 表中。 AuditLog 表包含以下内容:

Id(PK,整数,不为空)操作(nchar(1),不为空)ActionDate(日期时间,不为空)ActionUser(nvarchar(100),不为空)AuditData(XML(.),不为空)

在我的触发器中,我正在执行以下操作:

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

这很好用,但是,我想要做的是向表名的 Root 元素添加一个属性,以便 AuditData xml 看起来像这样:

<Root tableName = "Person">
<Id>132</Id>
<FirstName>Ryan</FirstName>
...
</Root>

有什么方法可以通过 select from ... for xml 语句来完成此操作吗?

最佳答案

this 寻求帮助线程,我能够想出这个并且它似乎有效:

select 'Person' as "@tableName",
(select * from deleted for xml path('DataItem'), type)
for xml path('Root')

关于sql-server - 如何将属性添加到由 SQL 的 Select for xml 生成的 xml 的根元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12270348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com