Hoy vamos a ver como obtener el ID del último INSERT que hemos hecho en la base de datos (muy útil sobre todo en el caso de que el ID sea un "auto increment"). Si no conocéis LAST_INSERT_ID, las 2 soluciones que tenéis son un poco cutres:
- Hacer una consulta "SELECT max(id) FROM tabla" (así obtenedremos el ID más alto de la tabla), poco recomendable porque puede ser que alguien agrege otro registro mientras hacemos nosotros la consulta, con lo cual no estariamos obteniendo el ID del registro que queremos.
- La otra alternativa es realizar una consulta poniendo como condiciones la información de los campos que acabamos de meter. Ejemplo: hemos agregado un usuario que se llama paco pil, ha nacido el 2000/12/12, entonces hacemos: "SELECT id FROM tabla WHERE nombre='paco' and apellidos='pil' and fechanac='2000/12/12'". Esta opción suele ser más efectiva, en caso de que no tengamos registros repetidos, pero es bastante más costosa...ya que hay que escribir mucho código.
La opción más correta es utilizar LAST_INSERT_ID, para ello nada más que tenemos que hacer la siguiente consulta:
SELECT LAST_INSERT_ID() FROM tabla
Tenéis que tener en cuenta que LAST_INSERT_ID() va asociado a la conexión actual, por tanto si cerramos la conexión, abreimos una nueva y consultamos el LAST_INSERT_ID nos devolverá 0, ya que es una conexión nueva en la que no hemos hecho ningún INSERT.
Si tenéis alguna duda, podéis obtener más información en la documentación oficial de MySQL.
Id por la sombra.
Nota: Si probais el LAST_INSERT_ID desde el Mysql Query browser siempre os devolverá 0, ya que esta aplicación crea una conexión distinta para cada consulta.

Gracias
Este comando no lo sabia, me fue de gran utilidad. Gracias por compartir el conocimiento. Saludos desde Guatemala. Oralex
Que bueno saber esto!!
Que bueno saber esto!! gracias por el aporte. Siempre me había matado haciendo otra consulta para seleccionar el id y que coincidiera con algún campo de los que estaban ingresando en el formulario (a veces difícil y tocaban aplicar otros métodos rudimentarios)
Con esta función PHP me ahorra código y tiempo ;)
Averiguar proximo Id en Mysql
Hago mi aporte:
Con esto se puede obtener el próximo Id a insertar en una tabla con un campo auto_increment y por mas que se borren registros jamás se usaran números iguales.
Esto es informacion del esquema de la base:
$SqlString = "SELECT AUTO_INCREMENT AS LastId FROM information_schema.tables WHERE TABLE_SCHEMA='$Nombre_mi_base_de_Datos' AND TABLE_NAME='$nombre_mi_tabla'";
steeben
En java
oye imaginate q tengo q extraer el ultimo id, pero en esta base de datos el id es de tipo varchar..q funcion habra para este tipo de datos...de antemano gracias si me puedes colaborar con esto....
Hola, oye ese codigo que
Hola, oye ese codigo que pusiste sirve en C#, porque me sería muy util, ya que estoy programando en ese lenguaje, y no sabia como obtener el ultimo registro, pero gracias por el ejemplo.
Es código PHP....pero no creo que sea difícil portarle
Es código PHP....pero no creo que sea difícil portarle.
De todas formas siempre puedes hacer un:
"select last_insert_id()"
Esta consulta funciona independientemente del lenguaje de programación que estes empleando.
Un saludo.
gracias por el articulo
Hola mi nombre es francisco, quisiera saber si ustedes podrian subir algun ejemplo.
Ejemplillo
Sencillo ejemplo en el que introducimos un usuario y con mysql_insert_id desde php obtenemos el id que ha dado a ese usuario:
Espero te sirva, un saludo!
Un pequeño detalle
En PHP la función que hace esto se llama mysql_insert_id($link)
En PHP
Otro apunte, en PHP existe una función llamada last_insert_id() que hace exactamente lo mismo que la consulta en MySQL.
Saludos
Escribir un nuevo comentario