SQL 2基于第一个返回插入

时间:2015-11-25 22:39:07

标签: sql sql-server sql-insert

我正在根据Excel文件中的数据生成一系列插件到SQL Server 2014

如何获取要放入第二个

的第一个INSERT的ID值

安大略省是加拿大省的简化示例:

Insert into country (Name) values('canada');
Insert into provinces (CountryId, Name) values (???,'ontario'); 

有100个插页,因此性能不是问题。

2 个答案:

答案 0 :(得分:3)

declare @countryid int

Insert into country (Name) values('canada');
SELECT @countryid = SCOPE_IDENTITY()

Insert into provinces (CountryId, Name) values (@countryid,'ontario'); 

答案 1 :(得分:1)

tshoemake上面的答案显示了如何插入一条记录并获得结果。如果要在Country中插入许多记录,然后在省中插入许多记录,则可能需要查看OUTPUT子句。您必须了解如何加入省份列表,因为此代码只会向每个国家/地区添加Ontario

create table __country
(
    id int identity(1,1) primary key,
    Name varchar(5000)
)


CREATE TABLE __Provinces (
countryid int, 
name varchar(5000)
)

CREATE TABLE #tempIDs
(
    id int
)

INSERT INTO __Country
OUTPUT inserted.id
INTO    #tempIDs
values ('canada'), values('USA')


insert into __Provinces
select  #tempIDs.id, 'ontario'
from    #tempIDs
join    __country
    ON  __country.id = #tempIDs.id


select * from __Provinces