【发布时间】:2012-10-26 20:38:42
【问题描述】:
我有两张桌子,Table_1 和 Table_2。
Table_1 具有列PK(自动递增int)和Value(nchar(10))。
Table_2 有 FK (int)、Key (nchar(10)) 和 Value (nchar(10))。
也就是说Table_1是一张数据表,Table_2是一个key-value存储,Table_1中的一行可能对应Table_2中的0、1个或多个key和value。
我想编写代码,以编程方式构建一个查询,该查询使用来自Table_1 的主键将一行插入Table_1,并将可变数量的行插入Table_2。
一排就能轻松搞定:
INSERT INTO Table_1 ([Value])
OUTPUT INSERTED.PK, 'Test1Key', 'Test1Val' INTO Table_2 (FK, [Key], [Value])
VALUES ('Test')
但 SQL 似乎不喜欢拥有多行的想法。这失败了:
INSERT INTO Table_1 ([Value])
OUTPUT INSERTED.PK, 'Test1Key', 'Test1Val' INTO Table_2 (FK, [Key], [Value])
OUTPUT INSERTED.PK, 'Test2Key', 'Test2Val' INTO Table_2 (FK, [Key], [Value])
OUTPUT INSERTED.PK, 'Test3Key', 'Test3Val' INTO Table_2 (FK, [Key], [Value])
VALUES ('Test')
有什么办法可以做到吗?
【问题讨论】:
-
Read the MSDN documentation on the
OUTPUTclause - 您可以将多行输出到例如一个临时表(或一个表变量 - 或直接进入目标表!) -
我已经阅读了,但可能错过了您所指的内容。输出类似 INSERTED.* 的东西在这里并不合适,因为我只想从一个插入的行中多次输出值。我想你不能给我举个例子吗?