假设一个模式包含以下表:
巴兹
BazID (PK, Identity)
Description
FooTemplate(一个 Baz 可能有零到多个 FooTemplates)
FooTemplateID (PK, Identity)
BazID (FK)
Description
NextGenerationDate
BarTemplate(一个 FooTemplate 可能有零到多个 BarTemplate)
BarTemplateID (PK, Identity)
FooTemplateID (FK)
Description
Foo(一个 Baz 可能有零到多个 Foo)
FooID (PK, Identity)
BazID (FK)
Description
Bar(一个 Foo 可能有零到多个 Bar)
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
实体正确关联?
编辑:该过程将在运行 SQL Server 2005 的服务器上执行。
EDIT2:感谢大家的帮助。在仔细考虑了这些信息后,我选择了另一种解决方案。我已将 Foo 表中的主键更改为不再是自动生成的标识列,这样可以执行对临时表的中间插入以捕获相关的 FooTemplateID 以及 FooID