Die Datenbank ist SQL Server 2012.die sequenzierte id einer Reihe bekommt in einer anderen Tabelle
ich sollte ein paar Zeilen auf zwei Tabellen aus einem hinzufügen Excel-Datei.
Ich habe den Tisch Customers
:
id | firstname | lastname
1 | John | Doe
etc.
Die Customers
Tabelle hat eine Sequenz customers_seq
für IDs für neue Zeilen zu verwenden. Denn zum Zeitpunkt des Einfügens ist die Anzahl der Zeilen nicht bekannt. Wie folgt:
insert into Customers (id,firstname,lastname)
values
(next value for customers_seq, '2016-001', 'John', 'Doe'),
(next value for customers_seq, '2016-002', 'Jane', 'Doe'),
(next value for customers_seq, '2016-003', 'Steve', 'Waters');
-- tons of more customers --
Dies funktioniert wie vorgesehen.
Ich habe auch die Tabelle Services
id | name | fk_Customers
1 | lunch| 2
etc.
Nun, hier ist das Problem:
ich soll - in derselben Abfrage, wo ich die Customers
rows- fügen Sie eine Zeile hinzufügen auf der Tabelle Services
nach jeder Zeile hinzugefügt, um die Tabelle Customers
so, dass die Sequenz generiert id
für die Customers
Zeile würde der Wert für die Spalte fk_Customers
in der Zeile, die hinzugefügt wird die Services
Tabelle.
Ich dachte, es wäre möglich, mithilfe der lokalen TSQL-Variablen möglich.
Also, so etwas wie:
DECLARE @sequenceCreatedId bigint;
SET @sequenceCreatedId = next value for customers_seq;
insert into Customers (id,firstname,lastname)
values(@sequenceCreatedId, '2016-001', 'John', 'Doe')
insert into Services (id,name,fk_Customers)
values(next value for services_seq, someName, @sequenceCreatedId);
--And just repeat that whole thing. Setting that variable again and again--
SET @sequenceCreatedId = next value for customers_seq;
insert into Customers (id,firstname,lastname)
values(@sequenceCreatedId, '2016-002', 'Jane', 'Doe')
insert into Services (id,name,fk_Customers)
values(next value for services_seq, anotherName, @sequenceCreatedId);
Gibt es einen besseren Weg, dies zu tun?