2016-04-29 21 views
1

Ich habe 2 Tabellen ProductSize und Product.SQL Server: Identität einfügen

Produkt Tabelle:

ProductID ProductCode ProductSizeID 

Produkt-Größe Tabelle:

ProductSizeID PackperCase ItemsperCase ItemSize 

Ich habe eine gespeicherte Prozedur, die sowohl diese Tabellen auffüllt, aber ich kann bevölkern die nicht Products Tabelle ohne bevölkern die Product Size Tabelle (wie ich die productsizeID brauche).

Wie kann ich das angehen?

Ich brauche etwas, das die letzte ID zeigt, die ich gerade in die Productsize Tabelle eingefügt habe. Die gespeicherte Prozedur fügt 1 Datensatz zu einem Zeitpunkt ein, aber ich möchte nicht wirklich MAX() verwenden, um die ID zu erhalten, da andere Dinge in der Datenbank möglicherweise ausgeführt werden.

+2

Wenn der Sproc 1 Datensatz auf einmal einfügt, warum können Sie nicht ['SCOPE_IDENTITY()'] (https://msdn.microsoft.com/en-GB/library/ms190315.aspx) verwenden, um die Wert, den Sie gerade eingefügt haben? – Shaneis

+0

Vielen Dank, ich habe seine SELECT ID2 = SCOPE_IDENTITY() Print ID2 – Abbaskhan

Antwort

2

Sie müssen zuerst die Zeile in ProductSize einfügen und die ID zurück:

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

DECLARE @NewID INT = SCOPE_IDENTITY();  

und dass dann in Ihrem zweiten Einsatz in die Products Tabelle verwenden:

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

und du bist erledigt!

Verwandte Themen