Social Icons

twitter facebook google plus linkedin

viernes, 21 de septiembre de 2012

Diferencia entre SELECT @@IDENTITY, SELECT SCOPE_IDENTITY() y SELECT IDENT_CURRENT('tabla')

Hola Mundo

No es una novedad que en los motores de bases de datos exista una función que sirva para generar números de forma correlativa, o bien, definiendo un inicio y un incremento. Por ejemplo, en MySQL existe auto_increment y en SQL Server se llama identity.

Aprovecho estas líneas para tirar las orejas de aquellos desarrolladores que usan estas funciones de auto incremento como claves primarias. Hay muchas funciones que generan valores únicos y que son justamente para eso.

Volviendo al tema. En SQL Server existen 3 funciones que permiten saber el último número generado con identity. Estas funciones se ámbito en el ámbito en el cual operan.

SELECT @@IDENTITY

Esto devolverá el último valor generado con identity. No importa donde haya sido, simplemente lo mostrará.

SELECT SCOPE_IDENTITY()

Devolverá el último valor generado en el ámbito. Por ejemplo, si se está trabajando dentro de un trigger, devolverá el último valor que identity generó dentro del trigger.

SELECT IDENT_CURRENT('tabla')

Devolverá el último valor generado en la tabla que se especifica.

 

Ojalá que les sirva.

 

Chau