0

いくつかのテーブルから派生した一時テーブルがあり、これを 2 つのテーブル (T1 と T2) に挿入する必要があります。T1 には主キー (自動生成) があり、T2 に外部キーとして挿入する必要があります (1 対多の関係)。

次の挿入ステートメントを使用したかどうかはわかっています

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

scope_identity を使用することはできません。T2 で使用するために最後に自動生成された ID しか得られないからです。

カーソルを使用するか、各行をループする以外に、テーブル間で分割されたレコード間の関係を維持するためのオプションは何ですか? 参考までに、この挿入プロセスは定期的に行われ、2 つのテーブルに最大 1000 件以上のレコードが含まれる可能性があります。

4

1 に答える 1

2

「出力句」はあなたの問題を解決できると思います。例

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
于 2012-05-20T12:32:25.177 に答える