SQL 2 插入基于第一个 return

SQL 2 Inserts based on return of first

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

如何获取第一个 INSERT 的 ID 值以放入第二个

简化示例,其中安大略省是加拿大的一个省:

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

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

declare @countryid int

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

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

tshoemake 上面的答案显示了如何插入一条记录并获得结果。如果您想在 Country 中插入许多记录,然后在 provinces 中插入许多记录,您可能需要查看 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