ホームページ >データベース >mysql チュートリアル >SQL Server で最後の ID 値を取得するにはどうすればよいですか?

SQL Server で最後の ID 値を取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-29 17:48:14716ブラウズ

How to Retrieve the Last Identity Value in SQL Server?

最後の ID 値を取得するための代替方法: 総合ガイド

データベース プログラミングでは、挿入操作の後に主キー ID フィールドの値を取得することが重要です。この記事では、この目的のためのさまざまなメソッドを検証し、その機能とさまざまなシナリオへの適合性についての洞察を提供します。

@@IDENTITY

@@IDENTITY は、現在のセッションで生成された最後の ID 値を取得します。

declare @t table (
    id int identity primary key,
    somecol datetime default getdate()
)
insert into @t default values

select @@IDENTITY --returns 1

@@IDENTITY の欠点は、スコープに制限されていないことです。したがって、現在のトランザクション外のステートメントを含む、セッション内の任意のステートメントによって生成された最後の ID 値を返すことができます。

SCOPE_IDENTITY()

SCOPE_IDENTITY() は、トランザクション内で生成された最後の ID 値を取得します。現在のスコープ。これは、それを生成したステートメントとトランザクションに制限されます。

select SCOPE_IDENTITY() --returns 1

SCOPE_IDENTITY()は、返される ID 値が現在のスコープに固有であることを保証するため、@@IDENTITY と比較してより正確なメソッドです。

OUTPUT

INSERT ステートメントで OUTPUT 句を使用すると、生成された ID 値を含む、挿入された行を含むテーブル。

Create Table #Testing (  
    id int identity,  
    somedate datetime default getdate()  
)  
insert into #Testing  
output inserted.*  
default values

OUTPUT は、複数の ID 値を一度に取得する便利な方法を提供します。単一のトランザクション。ただし、これは対象のテーブルに固有であり、追加のテーブル作成およびクリーンアップ操作が必要です。

結論

最後の ID 値を取得する方法の選択は、アプリケーションの特定の要件によって異なります。

  • @@IDENTITY は、セッションに挿入された行の ID 値が必要なシナリオに適しています。 table.
  • SCOPE_IDENTITY() は、ID 値が現在のスコープに固有であり、トランザクションの正確性を確保する必要がある場合に推奨されます。
  • OUTPUT を使用すると、制御されたトランザクション内で複数の ID 値を効率的に取得できます。 .

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。