挿入の直前に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];
Bummer、これは、挿入を行い、新しいIDを返すOUTPUT句を持つCTEを持つマッピングテーブルのUPDATEでは実行できませんか? – user514848