SQL - 将记录插入多个表和Scope_Identity

时间:2012-05-20 12:28:13

标签: sql sql-server sql-server-2008

我有一个从多个表派生的临时表,需要将其插入到两个表(T1和T2)中。 T1有一个主键(自动生成),必须作为外键插入T2(一:多关系)

我知道是否使用了以下插入语句

INSERT INTO T1 (.....)
SELECT (.....) FROM X

我无法使用scope_identity,因为这只会给我最后一个自动生成的ID,以便在T2中使用。

除了使用光标或循环每行之外,还有哪些选项可用于确保跨表分割的记录之间的关系仍然存在?仅供参考,此插入过程定期发生,并且可以在两个表中包含1000多条记录。

1 个答案:

答案 0 :(得分:3)

“输出条款”可以解决您的问题。一个例子

create table itest ( i int identity not null primary key, j int not null unique )
create table #new ( i int not null, j int not null)
insert into itest (j)
output inserted.i, inserted.j into #new
select o.object_id from sys.objects as o
select * from #new
drop table #new, itest;
go