ホームページ > データベース > mysql チュートリアル > SQL Server で新しく生成された ID 値を取得するにはどうすればよいですか?

SQL Server で新しく生成された ID 値を取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-23 09:03:11
オリジナル
660 人が閲覧しました

How to Retrieve Newly Generated Identity Values in SQL Server?

SQL Server ID 値の取得方法: 総合ガイド

ID 列を含む SQL Server テーブルを操作する場合、挿入操作後に新しく生成された ID 値を取得することが重要です。 このガイドでは、この目的で使用できるさまざまな関数とテクニック、@@IDENTITYIDENT_CURRENTSCOPE_IDENTITY()、および OUTPUT 句について説明します。

オプションを理解する

各方法は、異なるレベルの範囲と信頼性を提供します。

  • @@IDENTITY: この関数は、特定のテーブルやステートメントに関係なく、現在のセッション内で生成された最後の ID 値を返します。 使い方は簡単ですが、範囲が広いため、同じセッション内で複数の挿入が発生した場合にエラーが発生しやすくなります。 慎重に使用してください。

  • IDENT_CURRENT('tableName'): この関数は、特定のテーブル (tableName) を具体的にターゲットにし、すべてのセッションとスコープにわたってそのテーブルに対して生成された最後の ID 値を取得します。使用頻度はそれほど高くありませんが、@@IDENTITY よりも高度な特異性を提供します。

  • SCOPE_IDENTITY(): 通常、これが推奨される方法です。現在のセッションおよび現在のスコープ (通常は現在のバッチまたはストアド プロシージャ) 内で生成された最後の ID 値を返します。これにより、@@IDENTITY と比較して分離性と精度が向上します。

  • OUTPUT 句: OUTPUT ステートメントとともに使用される INSERT 句は、挿入されたすべての行の ID 値を取得するための強力で信頼性の高い方法を提供します。 挿入された行は一時テーブルまたはテーブル変数に書き込まれるため、ID 値を直接クエリできるようになります。これは、並列実行プランを扱う場合に特に有益です。 ただし、OUTPUT 句はトリガーの に実行されます。つまり、トリガーによって生成された ID 値は反映されないことに注意してください。

適切な方法の選択

ほとんどのシナリオでは、SCOPE_IDENTITY() はシンプルさと信頼性の最適なバランスを提供します。 @@IDENTITY は、より広い範囲が明示的に必要でない限り、使用しないでください。 IDENT_CURRENT('tableName') は、必要に応じてより具体的なアプローチを提供します。OUTPUT 句は、特に複雑なシナリオや並列処理で作業する場合、その堅牢性の点で価値があります。 最終的には、アプリケーションの特定の要件と同時操作の可能性によって選択が決まります。

以上がSQL Server で新しく生成された ID 値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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