次のテーブルで構成されるスキーマを想定します。
バズ
BazID (PK, Identity)
Description
FooTemplate(Bazには0から多数のFooTemplateが含まれる場合があります)
FooTemplateID (PK, Identity)
BazID (FK)
Description
NextGenerationDate
BarTemplate(FooTemplateには0から多数のBarTemplateが含まれる場合があります)
BarTemplateID (PK, Identity)
FooTemplateID (FK)
Description
Foo(A Bazには0から多数のFooが含まれる場合があります)
FooID (PK, Identity)
BazID (FK)
Description
バー(A Fooには0から多数のバーがある場合があります)
BarID (PK, Identity)
FooID (FK)
Description
ストアドプロシージャが毎日実行され、次の生成日を過ぎた関連エンティティのエンティティが生成Foo
されます。Bar
Baz
この手順の最初の部分は、次のようになります。
DECLARE @GeneratedFooIDList TABLE (INT FooID);
INSERT Foo (BazID, Description)
OUTPUT inserted.FooID INTO @GeneratedFooIDList
SELECT
BazID
Description
FROM
FooTemplate
WHERE
NextGenerationDate < GETDATE()
私の質問は、適切なエンティティを生成し、それらを新しく作成されたエンティティBar
に適切に関連付けるために、どのステートメントを実行できるかということです。Foo
編集:プロシージャは、SQLServer2005を実行しているサーバーで実行されます。
EDIT2:助けてくれたみんなに感謝します。情報を注意深く検討した後、私は別の解決策を選びました。Fooテーブルの主キーを自動生成されたID列ではないように変更しました。これにより、一時テーブルへの中間挿入を実行して、FooIDとともに関連するFooTemplateIDをキャプチャできます。