2016-04-29 11 views
1

私は2つのテーブルProductSizeProductを持っています。SQL Server:IDを挿入

製品テーブル:

ProductID ProductCode ProductSizeID 

商品サイズテーブル:

ProductSizeID PackperCase ItemsperCase ItemSize 

私は、これらのテーブルの両方を移入ストアドプロシージャを持っている、しかし私はせずにProductsテーブルを読み込むことができませんProduct Sizeテーブルにデータを入力します(productsizeIDが必要です)。

これにはどのように対処できますか?

私はちょうどProductsizeテーブルに挿入された最後のIDを示すものが必要です。ストアドプロシージャは一度に1レコードを挿入しますが、実際にはMAX()を使用してIDを取得する必要はありません。データベース内で他の処理が行われている可能性があるからです。

+2

一度に1レコードを挿入すると、なぜ['SCOPE_IDENTITY()'](https://msdn.microsoft.com/en-GB/library/ms190315.aspx)を使ってあなたが挿入したばかりの価値? – Shaneis

+0

ありがとうございます、私は彼のSELECT ID2 = SCOPE_IDENTITY()Print ID2 – Abbaskhan

答えて

2

あなたが最初ProductSizeに行を挿入して戻ってIDを取得する必要があります:

INSERT INTO dbo.ProductSize(PackPerCase, ItemsPerCase, ItemSize) 
VALUES(....., ....., .....); 

DECLARE @NewID INT = SCOPE_IDENTITY();  

をしてからProductsテーブルにあなたの第二のインサートのそれを使用します。

INSERT INTO dbo.Products(ProductCode, ProductSizeID) 
VALUES(....., @NewID); 

、あなたがしています完了!