jueves, 28 de octubre de 2010

Saber el ID del ultimo registro agregado

Hay veces que necesitamos saber el Id del último registro agregado a una tabla, por diversas razones, validación, para correr un proceso, etc.
Si es una tabla sin un campo identity, podemos utilizar la siguiente técnica

SELECT TOP 1 [ArticuloID]
FROM Articulos
order by articuloid desc

Si tiene un campo identity podemos hacerlo de la siguiente manera

-- Buscar el valor de la semilla
SELECT IDENT_CURRENT ('pubarticulos') AS LastId;

Ojo.. si es un campo autoincremental y hemos borrado registros, la ultima función me regresa el valor en el que va la semilla.. no el del ultimo registro activo.

También despues de ejecutar un INSERT podemos obtener el último ID con la variable
@@IDENTITY, por lo que podemos utilizar las siguientes instrucciones de ejemplo

SELECT @@IDENTITY AS 'Identity';

o para regresarlo en un procedimiento

Return @@IDENTITY