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);
有没有更好的方式来做到这一点?