2010-11-21 17 views
1

挿入の直前にID値を保存する方法はありますか?マッピングテーブルに挿入した直後に新しいID値を保存する方法はありますか?マッピングテーブルは、他のテーブルの外部キーを更新するために使用されます。挿入前後のIDを保存しますか?

私はこれがOUTPUT INTO句では可能だと考えましたが、挿入された値だけが挿入可能です。 OUTPUT節を単独で使用してジョブを実行する方法がわかりません。たぶん何らかのサブクエリですか?

これはすべてあまりにも複雑で、これを行うにはSCOPE_IDENTITYとサブクエリを使用する方法があります。

ご協力いただければ幸いです。

p.s.ええ、私はIDを「予約する」(ダミー行を挿入してからDBCC CHECKINDENTを削除する)、新しく予約されたアイデンティティと古いアイデンティティをマッピングテーブルに保存し、新しいアイデンティティでテーブルを更新し、最後にINSERT_IDENTITIESをオンにして挿入を行っていますが、それは面倒です。

これはSQLServer 2008R2に適用されます。ここで

は動作しないものです:あなたはアイデンティティがどうなるかを事前に知ることはできません

INSERT 
    [SomeTable] 
    OUTPUT 
      INSERTED.[Id], 
      [Id] -- This doesn't work 
     INTO 
      [#mappingTable] 
SELECT 
    (SomeColumns) 
FROM 
    [#someOtherTable]; 

答えて

0

これは、MERGEのなステートメントおよびOUTPUT句で行うことができますを更新します。誰もこの情報で答えてくれなかったが、私の同僚は私にそれを示した。

0

OUTPUT句は、ソーステーブルではなく、挿入したテーブルでのみ機能します。私はこれも望んでいます:役に立つでしょう。

だから、あなただけ挿入されたテーブルを再問い合わせることができます(下記のような)または#mappingTable

​​
+1

Bummer、これは、挿入を行い、新しいIDを返すOUTPUT句を持つCTEを持つマッピングテーブルのUPDATEでは実行できませんか? – user514848

関連する問題