- La función
@@identity
devuelve la última identidad creada en la misma sesión.
- La función devuelve el último
scope_identity()
identidad creada en la misma sesión y el mismo alcance.
- El
ident_current(name)
devuelve la última identidad creada para una tabla o vista específica en cualquier sesión.
- La función
identity()
no se utiliza para obtener una identidad, se utiliza para crear una identidad en una consulta select...into
.
La sesión es la conexión de base de datos. El alcance es la consulta actual o el procedimiento almacenado actual.
Una situación donde las funciones scope_identity()
y @@identity
son diferentes, es si tiene un disparador sobre la mesa. Si usted tiene una consulta que inserta un registro, haciendo que el gatillo para insertar otro disco en alguna parte, la función scope_identity()
devolverá la identidad creada por la consulta, mientras que la función @@identity
devolverá la identidad creada por el gatillo.
Por lo tanto, normalmente se utilizaría la función scope_identity()
.
No se olvide del error de ejecución en paralelo que existe en SQL Server para SCOPE_IDENTITY y @@ IDENTIDAD: http://support.microsoft.com/default.aspx?scid=kb;en-US;2019779 –
@DaviddCeFreitas - Tengo curiosidad por leer sobre el error, pero el enlace parece estar roto (o al menos, está arrojando un error ASP). –
En realidad, lo encontré: https://support.microsoft.com/en-us/kb/2019779 –