2012-07-13 12 views
9

¿Alguien puede decirme la consulta del último valor insertado en la columna de la base de datos?¿Cómo recupero el último valor insertado en mi base de datos?

El problema es que el valor insertado se puede colocar en las filas interiores de la base de datos después de usar ASC o DESC, así que no puedo usar el método. Si alguien tiene la solución, por favor dígame.

Respuesta

12

Deberá utilizar una columna de datos TIMESTAMP para realizar un seguimiento del tiempo de inserción. Desafortunadamente, debido a las condiciones de carrera inherentes, el uso de claves primarias autoincrementadas no funcionará en este caso. Simplemente agregue la marca de tiempo de entrada como una columna de datos y recupérela con ORDER BY time_stamp DESC LIMIT 1 para obtener el último registro. Si se siente muy a la defensiva, el objetivo de incluir condiciones en la cláusula WHERE que son exclusivos de la INSERT llamada original (es decir, WHERE ID = x AND KEY = y)

2

I segundas comentarios de Li @ Daniel.

En cada mesa persistente que creo, tengo las siguientes columnas:

  • Identificación del que es la primera columna y la columna/identidad/serie auto-incrementales
  • CreatedBy que por defecto para el usuario (" system_user por defecto "en SQL Server), así que sé que actualiza la columna
  • CreatedAt que por defecto es la fecha y hora de la creación (" getdate predeterminado() en SQL Server).

(EXA la sintaxis ct varía según el databse.)

Con la excepción de las condiciones de carrera, puedo encontrar la última fila insertada al hacer "select * from table order by 1 desc".

Aunque estos toman más espacio, he descubierto que son más que retribuidos al poder resolver problemas con el tiempo.

Cuestiones relacionadas