Tuesday, May 22, 2012

Difference between @@IDENTITY, SCOPE_IDENTITY, IDENT_CURRENT

What SCOPE_IDENTITY is

SCOPE_IDENTITY is:

  • SCOPE_IDENTITY returns the last IDENTITY value inserted into an IDENTITY column in the same scope.
  • SCOPE_IDENTITY returns the last identity value generated for any table in the current session and the current scope.
  • A scope is a module; a Stored Procedure, trigger, function, or batch.
  • Thus, two statements are in the same scope if they are in the same Stored Procedure, function, or batch.
  • The SCOPE_IDENTITY() function will return the NULL value if the function is invoked before any insert statements into an identity column occur in the scope.

What IDENT_CURRENT is

IDENT_CURRENT is:

  • IDENT_CURRENT returns the last identity value generated for a specific table in any session and any scope.
  • IDENT_CURRENT is not limited by scope and session; it is limited to a specified table.

What @@IDENTITY is

@@IDENTITY is:

  • @@IDENTITY returns the last identity value generated for any table in the current session, across all scopes.
  • After an INSERT, SELECT INTO, or bulk copy statement completes, @@IDENTITY contains the last identity value generated by the statement.
  • If the statement did not affect any tables with identity columns, @@IDENTITY returns NULL.
  • If multiple rows are inserted, generating multiple identity values, @@IDENTITY returns the last identity value generated.
  • The @@IDENTITY value does not revert to a previous setting if the INSERT or SELECT INTO statement or bulk copy fails, or if the transaction is rolled back.

Differences

The differences between them are:

  • SCOPE_IDENTITY, IDENT_CURRENT, and @@IDENTITY are similar functions in that they return values inserted into IDENTITY columns.
  • SCOPE_IDENTITY and @@IDENTITY will return the last identity values generated in any table in the current session. However, SCOPE_IDENTITY returns values inserted only within the current scope; @@IDENTITY is not limited to a specific scope. A scope is a module; a Stored Procedure, trigger, function, or batch.

No comments:

Post a Comment