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 サイトの他の関連記事を参照してください。