[英]SQL Server: Multiple Output Clauses
我有两个表, 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
是一个键值存储其中在一个行Table_1
可以对应于0,1或更多个键和值在Table_2
。
我想编写代码,以编程方式构建一个查询,使用Table_2
中的主键将一行插入Table_1
,将可变数量的行插入Table_1
。
我可以用一行轻松完成:
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')
有没有办法让这项工作?
我不得不把代码放在答案中,在评论中看起来很难看......
CREATE TABLE #Tmp(PK int, value nchar(10))
INSERT INTO Table_1 ([Value])
OUTPUT INSERTED.PK, inserted.[Value] INTO #Tmp
SELECT 'Test'
INSERT INTO Table_2 (FK, [Key], Value)
SELECT PK, 'Test1Key', 'Test1Val' FROM #Tmp
UNION ALL SELECT PK, 'Test2Key', 'Test2Val' FROM #Tmp
UNION ALL SELECT PK, 'Test3Key', 'Test3Val' FROM #Tmp
顺便说一句,SQL Server不会让你在一个查询中完成所有操作而没有一些丑陋的黑客...
尝试将INSERTED.PK
值放入参数,然后使用3 INSERT..VALUES
或1 INSERT..SELECT
语句插入表2。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.