@@Identity vs. SCOPE_IDENTITY()

En SQL Server, siempre hemos usado SELECT @@Identity al final de un stored procedure que inserta un fila en una tabla con una columna de tipo identity. Así recuperamos el valor de la columna identity y lo puede utilizar la aplicación que llama al stored procedure.

Esto funcionará en la mayoría de las ocasiones, PERO no en todas. Imaginemos que la tabla tiene un trigger que añade una fila en otra tabla que también tiene una columna identity. Pues resulta que el SELECT @@Identity nos devolverá el valor usado en la segunda tabla!

La solución es poner al final del stored procedure Select SCOPE_IDENTITY() en vez de Select @@Identity.

Anuncios

Acerca de vcarazo

PMP, IT Project Manager
Esta entrada fue publicada en Desarrollo, SQL. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s