这是从这个问题开始的:
Modify XML in SQL server to add a root node
除了在该问题中提出并已解决的问题之外,我还将现有表拆分为 2 个,其中第 2 个表是第一个表的子表,外键返回第一个表。
所以目前
table1(ID, col1, col2, col3....coln)
正在变得
table1(ID, col1, col2, col3)
和
table2(PK, FK_table1, col4, col5, ...coln)
目前我还没有从现有表中删除任何东西,只是创建了第二个,我发现了OUTPUT构造,以便我可以同时插入两个表,包括将第一个表的 PK 作为 FK 放入第二个表在 1 插入 - 就像这样;
INSERT INTO table1 col1, col2,...etc...
OUTPUT inserted.ID, col1, col2, ....
INTO table2(FK_table1, col1, col2, .... )
Select col.value('node1[1]', 'int') col1,
col.value('node2[1]', 'varchar(50)') col2,
....etc......
FROM @xml.nodes('//Items/Item') doc(col)
这一次成功插入两个表但依赖于我尚未从 table1 中删除列的事实,**AND* 导致表之间存在 1:1 关系,而我需要的是 table1 只有行对于不同的 col1, col2, col3 , table2 包含更详细的信息
我想知道我是否以正确的方式进行?我将能够在 1 个查询中执行此操作,还是必须将其分解?我在想也许我可以先将xml切碎到table1中,然后再单独切碎到table2中,加入table1以获得插入的FK?以前有人做过这种事吗?