插入具有自动增量Id的表时保持外键关系

The*_*Gwa 4 sql insert foreign-key-relationship identity-column sql-server-2008

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

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

我遇到的问题是,当我想插入一个新的缺陷及其缺陷数据时,首先插入缺陷并获取一个Id,但我不知道该ID是给DefectData的.我的解决方案是从匹配插入数据的缺陷中选择以获得Id.

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

设置IdentityInsert然后插入我自己的Id将无法工作,因为这是由网络服务器运行,可能有并发呼叫(我在这里吗?).

图

提前致谢.

gbn*_*gbn 5

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

BEGIN TRAN

INSERT Defect ()
VALUES (...)

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

COMMIT TRAN
Run Code Online (Sandbox Code Playgroud)