SQL服务器 - 捕获XML查询,并将其保存到一个表?
-
21-09-2019 - |
题
我想运行(广泛)的查询产生XML的一行。此XML代表约12桌价值关系数据。当我从顶级表“删除”行,我想“捕获”的数据在那一刻的状态(XML),将其保存到档案表,然后删除所有子表数据,并最终标记顶层表/行为“请将isDeleted = 1”。我们还有其他的数据挂父表的关闭该不能被删除,稳赚不赔的关系的顶级表。
我大多数XML的制定 - 见 href="https://stackoverflow.com/questions/1381763/for-xml-path-in-sql-server">我的文章蠕虫的该罐中。
现在,我怎么能捕捉到存档表?
CREATE TABLE CampaignArchive(CampaignID int, XmlData XML)
INSERT INTO CampaignArchive(CampaignID, XmlData)
SELECT CampaignID, (really long list of columns) FROM (all my tables) FOR XML PATH ...
这是行不通的。 :)
任何建议?
TIA
解决方案
您需要一个子查询来包装所有的XML创建成一个单一的标量进入列XMLDATA。再次,使用类型来创建一个XML类型不是一个字符串的一个标量:
INSERT INTO CampaignArchive(CampaignID, XmlData)
SELECT CampaignID, (
select (really long list of columns)
FROM (all my tables) FOR XML PATH ..., type);
不隶属于 StackOverflow