2016-04-29 77 views
1

我有2個表ProductSizeProductSQL服務器:插入身份

產品表:

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()打印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); 

和你完成了!