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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-12-31 13:29:10411ブラウズ

How to Retrieve Identity Values After Inserting Multiple Records in SQL Server 2005 Without Cursors?

複数のレコードの挿入と ID 値の取得

ID 列を含むテーブルに複数のレコードを挿入する場合、新しく生成された ID 値の取得は、後続のデータ操作にとって重要になる可能性があります。 。この記事では、Microsoft SQL Server 2005 でカーソルを使用せずにこれを実現する方法について説明します。

問題の説明

次のシナリオを考えてみましょう: ID 列 (id) を持つ 2 つのテーブル、テーブル A があります。表 B には関連データが含まれています。テーブル B からテーブル A にレコードを挿入し、それぞれの ID 値を取得してテーブル B の NewId 列を更新したいと考えています。

ソリューション

SQL Server 2005 には、OUTPUT 句を介した便利なメカニズムが用意されています。挿入操作中に生成された ID 値を取得します。次のコードは、この機能の使用方法を示しています。

DECLARE @output TABLE (id int)

INSERT INTO A (fname, lname)
OUTPUT INSERTED.id INTO @output
SELECT fname, lname FROM B

このクエリは、テーブル B からテーブル A にレコードを挿入し、@output というテーブル変数に ID 値を格納します。テーブル変数 @output には、新しく生成された ID 値を含む 1 つの列 (ID) が含まれており、それらを取得してさらなる処理に使用できます。

テーブルとデータの例を検討してください。問題の説明に記載されています。上記のコードを実行すると、

-- Insert records into Table A and retrieve identity values
DECLARE @output TABLE (id int)

INSERT INTO A (fname, lname)
OUTPUT INSERTED.id INTO @output
SELECT fname, lname FROM B

-- Display the identity values in the table variable
SELECT * FROM @output

結果は、挿入された行の ID 値を含むテーブルになります。

id
-------
1
2
3

これらの ID 値は、NewId の更新に使用できます。表 B の列もそれに応じて変更されます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。