ホームページ > データベース > mysql チュートリアル > SQL Server で挿入された行の ID 値を取得する方法

SQL Server で挿入された行の ID 値を取得する方法

Patricia Arquette
リリース: 2025-01-23 09:12:11
オリジナル
711 人が閲覧しました

How to Retrieve the Identity Value of an Inserted Row in SQL Server?

SQL Server に新しく追加された行の ID を取得する

自動インクリメント列を含むテーブルに行を追加するには、多くの場合、新しく生成された ID を取得する必要があります。 SQL Server はこれを実現するためにいくつかの方法を提供していますが、それぞれに独自の長所と短所があります。 これらの違いを理解することが、状況に最適な方法を選択する鍵となります。

さまざまなアプローチとそのニュアンス

@@IDENTITY 関数

@@IDENTITY 関数は、現在のデータベース セッション内のすべてのテーブルにわたって最後に生成された ID 値を返します。 これは便利ですが、同じセッションで複数の挿入が発生した場合は信頼性が低く、不正確な結果が生じる可能性があります。

SCOPE_IDENTITY() 関数

SCOPE_IDENTITY() の方が正確です。現在のセッションおよび スコープ (ストアド プロシージャまたはバッチ内など) 内で生成された最後の ID 値を返します。これにより、一般的には最も安全で最も推奨されるオプションになります。

IDENT_CURRENT('テーブル名') 関数

IDENT_CURRENT('tableName') は、特定のテーブルを直接ターゲットにします。セッションやスコープに関係なく、そのテーブルに対して生成された最後の ID 値を取得します。 これは、最近の挿入がない場合でも、テーブルに割り当てられた最後の ID を確認するのに役立ちます。

INSERT での OUTPUT 句の使用

INSERT ステートメントは、OUTPUT 句と組み合わせると、強力で直接的なメソッドを提供します。 これにより、ID 値を含む、ステートメントによって挿入されたすべての行をキャプチャできます。 このアプローチはステートメント自体に範囲を限定し、潜在的な曖昧さを回避します。 通常、これには一時テーブルまたはテーブル変数への挿入が含まれるため、もう少し複雑になることに注意してください。

いつどの方法を使用するか

  • ほとんどのシナリオでは、新しく生成された ID 値を取得するには SCOPE_IDENTITY() が推奨される方法です。 スコープ固有の性質により正確さが保証されます。
  • @@IDENTITY は、すべてのスコープにわたる最後の ID 値が必要で、エラーの可能性が認識されている場合にのみ使用してください。
  • IDENT_CURRENT('tableName') は、セッションやスコープに関係なく、特定のテーブルの最後の ID 値を取得するのに役立ちます。
  • INSERT ... OUTPUT アプローチは効率性とスコープ制御を提供しますが、追加のセットアップが必要です。 複雑さの増加に対する利点を考慮してください。

以上がSQL Server で挿入された行の ID 値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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