sql >> データベース >  >> RDS >> Sqlserver

Scope_Identity()、Identity()、@@ Identity、およびIdent_Current()の違いは何ですか?

    • @@identity 関数は、同じセッションで作成された最後のIDを返します。
    • scope_identity() 関数は、同じセッションおよび同じスコープで作成された最後のIDを返します。
    • ident_current(name) 任意のセッションで特定のテーブルまたはビューに対して作成された最後のIDを返します。
    • identity() 関数はIDを取得するために使用されるのではなく、select...intoでIDを作成するために使用されます。 クエリ。

    セッションはデータベース接続です。スコープは、現在のクエリまたは現在のストアドプロシージャです。

    scope_identity()が発生する状況 および@@identity 関数は異なります。テーブルにトリガーがある場合です。レコードを挿入するクエリがあり、トリガーが別のレコードをどこかに挿入する場合は、scope_identity() 関数はクエリによって作成されたIDを返しますが、@@identity 関数は、トリガーによって作成されたIDを返します。

    したがって、通常はscope_identity()を使用します 機能。



    1. SQLServer2012でのquery_post_execution_showplan拡張イベントの影響

    2. トリガーを使用せずにOracleで自動インクリメント

    3. ユーザーのデフォルトデータベースを開くことができません。ログインに失敗しました。 SQL Server ManagementStudioExpressをインストールした後

    4. 日付と時刻のデータのバケット化