Saber el último valor auto_increment

Publicado por | 07/01/2010 | en MySQL

¿Alguna vez te has preguntado como puedes saber el el último valor de un campo auto_increment en mysql o en php?. Te adelanto que no basta con ordenar la tabla y extraer el valor del último registro insertado, porque quizás se han eliminado 50 filas y el valor que obtendrías sería incorrecto. Te presento dos formas de conseguirlo:

Utilizando MYSQL

1
2
INSERT INTO tbl_name (campo1, campo2) VALUES ('valor1','valor2')
SELECT last_insert_id();


El valor de last_insert_id() es privado para la sesión que ejecuta las llamadas a columnas de tipo AUTO_INCREMENT, nadie más excepto nuestra sesión tendrá acceso al identificador de registro generado.

El valor recuperado por last_insert_id() se puede utilizar normalmente donde prodría ir una expresión, por ejemplo una sentencia de inserción del último viajero en una línea de bus determinada.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> insert into viajeros (nombre,apellidos)
VALUES ('Rosa', 'Álvarez');
Query OK, 1 row affected (0.02 sec)
mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
| 4 |
+------------------+
1 row in set (0.00 sec)
mysql> insert into autobuses_viajeros (id_bus, id_viajero, fecha)
VALUES (1, last_insert_id(), now());
Query OK, 1 row affected (0.02 sec)
mysql> select * from autobuses_viajeros;
+--------+------------+------------+
| id_bus | id_viajero | fecha |
+--------+------------+------------+
| 1 | 4 | 2008-04-30 |
+--------+------------+------------+
1 row in set (0.00 sec)

Ejemplo MYSQL extraído de cambrico.net

Utilizando PHP

1
2
3
4
5
6
7
8
9
10
<?php
$link = mysql_connect('localhost', 'usuario', 'contraseña');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('bbdd_name');

mysql_query("insert into tbl_name (campo1, campo2) VALUES ('valor1','valor2')");
printf("El último registro insertado tiene el id %d\n", mysql_insert_id());
?>
¿Te gustó esta entrada? ¡Compártela!
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • MySpace
  • Reddit
  • Technorati
  • Design Float
  • Meneame
  • StumbleUpon
  • Twitter
Comment RSS Trackback URL

Ningún comentario

Dejar una respuesta