Skip to Content

No te olvides de visitar:

LAST_INSERT_ID(): Obtener el último ID insertado en MySQL

Categoría:

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:

<?php
  //Primero conectamos a la base de datos y hacemos la inserción
  $link=mysql_connect('localhost','usuario','password');
  mysql_select_db('database', $link);
  $result=mysql_query("insert into usuarios (nombre,apellidos) values ('pancho','pincho')",$link);

  //Con la siguiente linea obtenemos el id que ha dado al usuario que acabamos de introducir
  $id_usuario=mysql_insert_id($link);
?>

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

Tu dirección de email no se mostrará públicamente.
  • No se admite ninguna etiqueta HTML
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.

Más información sobre opciones de formato