Saber el último valor auto_increment
¿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()); ?> |


