sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cuál es la diferencia entre Scope_Identity(), Identity(), @@Identity e Ident_Current()?

  • La @@identity La función devuelve la última identidad creada en la misma sesión.
  • La scope_identity() La función devuelve la última identidad creada en la misma sesión y el mismo ámbito.
  • El ident_current(name) devuelve la última identidad creada para una tabla o vista específica en cualquier sesión.
  • La identity() la función no se usa para obtener una identidad, se usa para crear una identidad en un select...into consulta.

La sesión es la conexión a la base de datos. El ámbito es la consulta actual o el procedimiento almacenado actual.

Una situación en la que scope_identity() y el @@identity las funciones difieren, es si tienes un gatillo sobre la mesa. Si tiene una consulta que inserta un registro, lo que hace que el disparador inserte otro registro en alguna parte, scope_identity() devolverá la identidad creada por la consulta, mientras que @@identity la función devolverá la identidad creada por el disparador.

Entonces, normalmente usaría scope_identity() función.