テーブルに新しいレコードを作成する際に、2つのテーブル(bとc)のそれぞれにレコードを作成する必要があります。そのトリックは、2つの新しいレコードが同じPK値を持つ必要があることです。これはUNIQUEIDENTIFIERでなければならず、したがってNEWID()を使用して生成され、元のレコードのキーとは関係しません。INSERTトリガのOUTPUT句では、両方のINSERTEDテーブルを参照できますか?
INSERT INTO [b] ([bKey], [Foo])
OUTPUT inserted.[bKey] [cKey], i.[Bar] INTO [c]
SELECT NEWID(), i.[Foo] FROM inserted i
しかし、これは違法であると思われる(In an OUTPUT clause in an INSTEAD OF INSERT trigger, is it possible to reference both INSERTED tables?):だから、私はINSERTトリガーでやりたいことは、このようになります。 NEWID()の結果にCURSORと変数を使用する以外にこれを行う方法はありますか?
ありがとう、アンドリー!私は恐ろしいCURSORよりも洗練されたソリューションがなければならないことを知っていました。 –