2012-04-19 14 views
3

良い一日、別のINSERTに値を提供するために、使用INSERT-OUTPUT

、別の値(複数可)を提供するような方法でINSERT-OUTPUTステートメントを使用することが可能である場合、私は思っていた、外、INSERTステートメント。このようにして、単一のステートメントでエンティティテーブルと交差テーブルに値を追加することができます。これを効果的に言いたいと思います。たとえば:

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

のでインナーINSERT-OUTPUT文は、テーブル#tblEntity1に新しいエンティティを追加します。新しいエンティティのIDIDENTITY(1, 1)として設定されているが、その後、外側INSERT文の2つの値を提供するために、私はすでに私のコードを持っている静的な値()と一緒に、OUTPUT声明を通じて返されます。

なぜなら、内部のINSERT-OUTPUT文を実行するとテーブルが返され、そのような出力は通常INSERTステートメントの値を提供するために使用できるからです。

明らかにこの例は機能しません。単純な文法の問題だと思っていました。

Thaあなたのコメントやアドバイスを事前に受け取ってください。

+0

何かが再びそれを取得し、別のインサートのためにそれを選択した結果を使用するには、この場合には動作しません動作するはずです2つの一致するidカラムを持って? – Hajo

+0

それはおそらく、私はちょうど少なくとも個別の文で最短のクエリを書こうとしていた:P – that0th3rGuy

+0

どのデータベースソフトウェアが使用されていますか? INSERT OUTPUTが使用されている場合は、 – Hajo

答えて

1

お客様の要件は、documentationに従います。 #tblIntersectを想定し

は、これが最後のインサート-IDのような

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