1
的數據庫是SQL Server 2012的獲取一個排的有序ID是一個行的另一個表的外鍵在一個查詢
我應該添加了一堆行對從兩個表Excel文件。
我有表Customers
:
id | firstname | lastname
1 | John | Doe
etc.
的Customers
表有一個序列customers_seq
使用IDS的新行。因爲在插入時行數量是未知的。具體如下:
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 --
這按預期工作。
我也有表Services
id | name | fk_Customers
1 | lunch| 2
etc.
現在,這裏的問題:
我應該 - 在我加入Customers
rows-添加一行相同的查詢在表Services
之後,每行添加到表Customers
之後,那麼序列生成的id
對於Customers
行將成爲添加到行上的列fk_Customers
的值該Services
表。
我想它可能使用T-SQL局部變量是可能的。
所以,像這樣:
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);
有沒有更好的方式來做到這一點?