4

DefectとDefectDataの2つのテーブルがあります。各欠陥には、1つまたは複数のDefectDataがある場合とない場合があります。そのため、DefectDataには外部キーとしてDefectId列があります。

両方のテーブルのIDは、自動インクリメントIDです。

私が抱えている問題は、新しい欠陥とその欠陥データを挿入したいときに、欠陥が最初に挿入されてIDを取得することですが、そのIDがDefectDataに何を与えるのかわかりません。私の解決策は、挿入されたデータに一致する欠陥から選択してIDを取得することです。

  1. 欠陥を挿入
  2. その欠陥のIDを取得します
  3. Idが2のDefectData(ゼロまたは多数)を挿入します。

IdentityInsertをオンに設定してから自分のIDで挿入すると、これはWebサーバーによって実行され、同時呼び出しが発生する可能性があるため、機能しません(私はここにいますか?)。

ダイアグラム

前もって感謝します。

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 に答える