[英]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.