ultimo registro obtener modificar insertar insertado ingresado incrementar columna campo automaticamente autoincremental auto_increment sql sql-server tsql get

modificar - obtener el ultimo registro insertado mysql



Cómo obtener el valor del autoincremento de la última fila en el inserto (5)

He buscado en Google este problema una semana y no me ha resultado útil. Creo que no estoy usando la palabra correcta.

Estoy utilizando SQL Server 2008 con t-sql y mi necesidad es optimizar mi función cuando inserto una nueva fila.

Tengo una tabla con la primera columna es la clave del tipo de autoincremento de enteros y otras columnas son solo para información

Cuando hacemos una inserción, SQL Server incrementa la clave automáticamente y tengo que hacer un máximo de selección para obtener el valor, por lo que hay una manera como una variable global como @@IDENTITY o una función para evitar el inicio de la transacción final y seleccionar el máximo


¿Qué hay de esto para el último valor de incremento automático

SELECT IDENT_CURRENT(''tableName'')-IDENT_INCR(''tableName'');


Acaba de ejecutar el código:

INSERT INTO Persons (FirstName) VALUES (''Joe''); SELECT ID AS LastID FROM Persons WHERE ID = @@Identity;

¡Y también funciona!


En mi caso tuve que usar @@ Identity, porque estaba insertando en una vista. Parece que SCOPE_IDENTITY solo funciona para los que ha creado explícitamente.

Mira aquí:

http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/

@@ IDENTITY devolverá el último valor de identidad ingresado en una tabla en su sesión actual. Si bien @@ IDENTITY se limita a la sesión actual, no se limita al alcance actual. Si tiene un disparador en una tabla que hace que se cree una identidad en otra tabla, obtendrá la identidad que se creó por última vez, incluso si fue el disparador que la creó.


Si está utilizando MySQL, obtiene el ID de incremento automático de la última inserción con:

SELECT LAST_INSERT_ID();

Vea here para referencia completa.


Utilice SCOPE_IDENTITY :

-- do insert SELECT SCOPE_IDENTITY();

Lo que te dará:

El último valor de identidad insertado en una columna de identidad en el mismo ámbito. Un ámbito es un módulo: un procedimiento almacenado, un activador, una función o un lote. Por lo tanto, dos declaraciones están en el mismo ámbito si están en el mismo procedimiento almacenado, función o lote.