明細レコードを挿入する前に、請求書レコードの存在を強制する外部キー制約があるようです。質問の言い回しに基づいて正確に言うのは難しいですが、次のようなものかもしれません。
-- 項目を保持するテーブル変数
DECLARE @lineItems テーブル
(
請求書番号 INT,
数量 INT
)
INSERT INTO @lineitems VALUES(1,1)
INSERT INTO @lineitems VALUES(1,2)
-- 請求書レコードを最初に追加し、合計数量など....
請求書に挿入
SELECT InvoiceNumber,SUM(数量)
FROM @lineItems
GROUP BY InvoiceNumber
-- ラインアイテムを追加できるようになりました
INSERT INTO LineItems SELECT * FROM @lineItems
これは、それが目標である場合に使用できるパターンです。
ユーザーが Web ページから [追加] をクリックしたときに、これらの LineItems をオンザフライで挿入したい場合。この方法でキャッシュするために LineItem SQL テーブルを使用しません。アプリケーションについて何も知らずに言うのは難しいですが、このデータを HTTP セッションまたはクライアントで (配列、json、ローカル ストレージなど) としてキャッシュする必要があります。これを SQL テーブルとして実行することを選択した場合は、制約なしで新しい LineItem を作成するだけで、上記と同様に、そのテーブルを使用して LineItem テーブルに挿入できます。