sql >> Base de Datos >  >> RDS >> Mysql

¿Es conceptualmente correcto hacer SELECT MAX (id), etc. para encontrar la última fila insertada?

Esto parece subjetivo, pero yo diría que no, no es conceptualmente correcto, porque:

  • quiere la fila insertada más recientemente
  • pero su consulta busca el id máximo valor

Sí, existe alguna relación entre el ID máximo y la inserción más reciente, pero tenga en cuenta lo siguiente:

  • ¿Qué sucede si se eliminó la fila insertada más recientemente?

Respuesta en MySQL:obtienes resultados diferentes. Tenga en cuenta que ni siquiera tiene que haber subprocesos múltiples o procesos múltiples para que esto falle. Eso es porque son dos cosas diferentes (que ciertamente a menudo pueden producir los mismos resultados).

select max(id) from <tablename>

contra

select last_insert_id()

(Adivina cuál tiene razón).

@Dems señaló que el OP es ambiguo. Aclararé mi punto principal:

Estamos hablando de tres piezas de información diferentes:

  • máximo id valor
  • id de la fila insertada más recientemente, específica de una sesión
  • id de la fila insertada más recientemente en la tabla (independientemente de la sesión)

Lo peligroso es que, a veces, consultar uno dará la respuesta correcta para otro, pero no siempre. .