2012-04-19 49 views
3

好日子,使用INSERT-輸出到另一個INSERT提供值

我想知道是否有可能使用INSERT-OUTPUT語句以這樣的方式來提供另一個值(S),外,INSERT語句。通過這種方式,可以在單個語句中將實體表和交集表添加到該表中 - 我希望我能夠有效地表達這一點。例如:

INSERT INTO [#tblIntersect] ([Entity1ID], [Entity2ID]) 
VALUES 
(
    INSERT INTO [#tblEntity1] ([Value]) 
    OUTPUT [inserted].[ID] AS [entity1ID], @entity2ID AS [entity2ID] 
    VALUES ('One') 
) 

所以內INSERT-OUTPUT語句將添加一個新的實體,以表#tblEntity1。新實體的ID(被設置爲IDENTITY(1, 1)會再通過OUTPUT語句返回,用一個靜態值(我已經在我的代碼一起),爲外INSERT聲明提供兩個值。

的我認爲這可能是因爲執行內部INSERT-OUTPUT聲明本身返回一個表,並且這樣的輸出通常可以用於爲INSERT語句提供值。

顯然這個示例不起作用; I希望這只是一個簡單的語法問題。

Tha請提前提出任何意見和建議。

+0

像上次插入-ID在這種情況下不能正常工作再次獲取它,使用它的選擇結果再插入? – Hajo 2012-04-19 15:47:02

+0

它可能會,我只是試圖用最少的單獨語句編寫最短的查詢:P – that0th3rGuy 2012-04-19 15:57:51

+0

使用哪個數據庫軟件?如果使用INSERT OUPUT, – Hajo 2012-04-19 16:00:30

回答

1

根據documentation您的要求是可能的。

假設#tblIntersect有兩個匹配的ID列這應該工作

INSERT INTO [#tblEntity1] ([Value]) 
OUTPUT [inserted].[ID] AS [entity1ID], @entity2ID AS [entity2ID] 
    INTO #tblIntersect 
VALUES ('One')