SQL Server では、新しく挿入された行の ID を取得する方法がいくつか提供されています。 各方法には長所と短所があり、特定のニーズに応じて選択します。このガイドでは、@@IDENTITY
、IDENT_CURRENT
、SCOPE_IDENTITY
、および OUTPUT
句の違いを明確にします。
@@IDENTITY
、IDENT_CURRENT
、および SCOPE_IDENTITY
@@IDENTITY
: この関数は、テーブルに関係なく、現在のセッションで生成された最後の ID 値を返します。 セッション内の任意のテーブルから ID を取得するのに便利ですが、トリガーや同時操作の影響を受ける可能性があるので注意してください。
IDENT_CURRENT
: セッションやスコープに関係なく、特定のテーブルに対して生成された最後の ID 値を取得します。 行を直接挿入しなかった場合でも、特定のテーブルの ID が必要な場合に最適です。
SCOPE_IDENTITY
: 現在のセッションとスコープ内で生成された最後の ID 値を返します。 一般に、同じステートメント内の他の同時プロセスから分離されているため、最近挿入された行の ID を取得する場合に最適な選択肢です。
OUTPUT
句: 強力な代替手段
OUTPUT
句は、INSERT
ステートメントから挿入された行に直接アクセスする方法を提供します。 ID 値を他の列データとともにテーブル変数または一時テーブルにキャプチャできます。 単純ではありますが、使用するのが少し複雑で、ステートメントがロールバックした場合でもデータが返されます。 重要なのは、トリガーの 前 で実行されるため、トリガーで生成された ID 値は取得されません。ただし、並列処理を使用する場合に ID 値を取得する唯一の信頼できる方法が提供され、実行計画に関係なくその可用性が保証されます。
以上がどの SQL Server ID 値取得メソッド (@@IDENTITY、IDENT_CURRENT、SCOPE_IDENTITY、OUTPUT 句) を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。