ホームページ > データベース > mysql チュートリアル > カーソルを使用せずに SQL Server にレコードを一括挿入した後に ID 値を取得する方法

カーソルを使用せずに SQL Server にレコードを一括挿入した後に ID 値を取得する方法

Patricia Arquette
リリース: 2025-01-03 17:11:40
オリジナル
685 人が閲覧しました

How to Retrieve Identity Values After Bulk Inserting Records in SQL Server without Cursors?

カーソルを使用せずにレコードを一括挿入し、ID 値を取得する

複数のレコードをテーブルに挿入することは、データベース プログラミングの一般的なタスクです。特に、あるテーブルから別のテーブルにデータをコピーする場合、新しいレコードに対して生成された ID 値を取得することが望ましいです。この点に関して、Microsoft SQL Server 2005 は、OUTPUT 句を使用した効率的なソリューションを提供します。

テーブル B からテーブル A にデータが挿入される、提供されたコード スニペットを検討します。

Create Table A (id int identity, Fname nvarchar(50), Lname nvarchar(50))
Create Table B (Fname nvarchar(50), Lname nvarchar(50), NewId int)
Insert into A(fname, lname)
SELECT fname, lname
FROM B
ログイン後にコピー

Toテーブル A に新しく挿入されたレコードの ID 値を取得するには、次の手法を使用できます。

OUTPUT 句

OUTPUT 句を使用すると、挿入、更新、または削除操作中に生成された値を取得できます。この場合、これを使用して、挿入された行の ID 値を取得できます。

DECLARE @output TABLE (id int)

Insert into A (fname, lname)
OUTPUT inserted.ID INTO @output
SELECT fname, lname FROM B
ログイン後にコピー

テーブル変数 (@output) を作成し、OUTPUT Inserted.ID 式を指定することで、クエリに次のことを指示します。挿入されたレコードの ID 値を @output に返します。

テーブルのクエリ変数

挿入操作が完了したら、@output テーブル変数をクエリして ID 値を取得できます。

select * from @output
ログイン後にコピー

これにより、1 つの列 (id) を持つテーブルが表示されます。 ) 新しく挿入されたレコードの ID 値が含まれます。必要に応じて、これらの値を使用してテーブル B 内の対応するレコードを更新できます。

以上がカーソルを使用せずに SQL Server にレコードを一括挿入した後に ID 値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート