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
我正在根据 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