批量插入后获取ID集的有关问题
批量插入后获取ID集的问题
例如:
执行以下语句
insert into tabA(col1,col2)select col1,col2 from tabA
问题:
怎样把插入后多条数据的ID返回回来!
注意:不止一条数据哟。
数据库sql2005的。
------解决方案--------------------
------解决方案--------------------
例如:
执行以下语句
insert into tabA(col1,col2)select col1,col2 from tabA
问题:
怎样把插入后多条数据的ID返回回来!
注意:不止一条数据哟。
数据库sql2005的。
------解决方案--------------------
drop table tb
create table tb
(
id int identity,
col1 varchar(10),
col2 varchar(10),
)
insert into tb
select 'a','b' union all
select 'a','a' union all
select 'b','b'
insert into tb
output inserted.id
select col1,col2 from tb
----------
id
4
5
6
------解决方案--------------------
--> 数据库版本:
--> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
--> 测试数据:tabA
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'tabA')
AND type in (N'U'))
DROP TABLE tabA
GO
---->建表
create table tabA([col1] varchar(1),[col2] varchar(2))
insert tabA
select 'a','b' union all
select 'c','f' union all
select 'v','fr'
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'tabB')
AND type in (N'U'))
DROP TABLE tabB
GO
---->建表
create table tabB([col1] varchar(1),[col2] varchar(2))
go
--> 查询结果
declare @t table ([col1] varchar(1),[col2] varchar(2))
insert into tabB(col1,col2)output inserted.col1,inserted.col2 into @t
select col1,col2 from tabA
SELECT * FROM @t
--> 删除表格
--DROP TABLE tabA