4

我有两个表:缺陷和缺陷数据。每个缺陷可能有也可能没有一个或多个 DefectData。因此,DefectData 有一个 DefectId 列作为外键。

两个表中的 Id 都是一个自动递增的标识。

我遇到的问题是,当我想插入一个新的 Defect 及其 DefectData 时,首先插入 Defect 并获取一个 Id,但我不知道该 Id 将提供给 DefectData 什么。我的解决方案是然后从匹配插入数据的缺陷中进行选择以获取 Id。

  1. 插入缺陷
  2. 获取该缺陷的 ID
  3. 插入 ID 为 2 的缺陷数据(零个或多个)。

设置 IdentityInsert 然后使用我自己的 Id 插入将不起作用,因为这是由网络服务器运行的,并且可能有并发调用(我在这里吗?)。

图表

提前致谢。

4

1 回答 1

5

基本模式是使用SCOPE_IDENTITY () 从 Defect 获取新的行 ID

BEGIN TRAN

INSERT Defect ()
VALUES (...)

INSERT DefectData (DefectID, AdditionalNotes, ...)
VALUES (SCOPE_IDENTITY(), @AdditionalNotes, ...)

COMMIT TRAN
于 2011-08-25T13:58:22.113 回答