ホームページ > データベース > mysql チュートリアル > 適切な SQL Server ID 取得関数を選択する方法: @@IDENTITY、SCOPE_IDENTITY()、IDENT_CURRENT()、または OUTPUT?

適切な SQL Server ID 取得関数を選択する方法: @@IDENTITY、SCOPE_IDENTITY()、IDENT_CURRENT()、または OUTPUT?

DDD
リリース: 2025-01-23 09:07:09
オリジナル
505 人が閲覧しました

How to Choose the Right SQL Server Identity Retrieval Function: @@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT(), or OUTPUT?

SQL Server ID 管理: 適切な関数の選択 (@@IDENTITY、SCOPE_IDENTITY()、IDENT_CURRENT()、OUTPUT)

多くのデータベース アプリケーションでは、特に ID 列を含むテーブルを扱う場合、新しく挿入された行の ID にアクセスする必要があります。 SQL Server はこれを実現するいくつかの方法を提供します。各方法には特定の用途と潜在的な欠点があります。

@@IDENTITY: セッション全体の ID 取得

@@IDENTITY は、テーブルやスコープに関係なく、現在のセッションで生成された最後の ID 値を取得します。 注意が必要です: @@IDENTITY は他のスコープ (トリガーなど) から値を返す可能性があり、不正確な結果が生じる可能性があります。

SCOPE_IDENTITY(): スコープ固有の ID 取得

SCOPE_IDENTITY() は、より正確なアプローチを提供し、現在のセッションおよびスコープ (通常は現在のデータベース) 内で生成された最後の ID 値を返します。 その信頼性により、ほとんどのシナリオで推奨される方法になります。 (n) 構文を使用すると、スコープをさらに絞り込むことができます。

IDENT_CURRENT(): テーブル固有の ID の取得

IDENT_CURRENT('tableName') は、セッションやスコープに関係なく、指定されたテーブルに対して生成された最後の ID 値を取得します。これは、現在のセッションで変更されていないテーブルから ID 値にアクセスする場合、または @@IDENTITYSCOPE_IDENTITY() が不適切な場合に役立ちます。

OUTPUT 句: ステートメントレベルの ID 取得

OUTPUT ステートメント内の INSERT 句は、ステートメントのスコープ内で挿入された行の ID に直接アクセスする方法を提供します。 @@IDENTITY とは異なり、スコープ間の問題を回避します。 ただし、出力を保存するためにテーブル変数または一時テーブルを使用する必要があるため、複雑さが増し、パフォーマンスに影響を与える可能性があります。 重要なのは、これが並列実行で ID を取得する唯一の保証された方法であるということです。

正しい ID 取得方法の選択は、特定のアプリケーションのニーズによって異なります。一般的には SCOPE_IDENTITY() が推奨されますが、@@IDENTITYIDENT_CURRENT()、および OUTPUT 句は、特定のコンテキストで価値のある代替手段を提供します。

以上が適切な SQL Server ID 取得関数を選択する方法: @@IDENTITY、SCOPE_IDENTITY()、IDENT_CURRENT()、または OUTPUT?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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