Cuando estamos trabajando con tablas de MySQL que tienen la llave(Primary key) de tipo entero autoincremental, cometemos a veces el grave error de no resetearlo al terminar el proyecto, esto hace que cuando ingrese un «primer registro» el id sea mayor a «1».
El siguiente script sirve para crear una tabla llamada usuarios, es importante usar los acentos agudos (`) antes y despues del nombre de una base de datos, tablas, y campos en MySQL, esto evitara que no salga error en caso de haber puesto como nombre alguna palabra reservada de MySQL.
CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `name` varchar(100) NOT NULL, `email` varchar(100) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Ahora ingresamos 2 registros
INSERT INTO `user`(`name`,`email`) VALUES('Juan','juan@gmail.com'); INSERT INTO `user`(`name`,`email`) VALUES('Maria','maria@gmail.com');
Al haber ingresado dos registros nuestro valor incremental se a posicionado en 3 que es lo correcto, pero que pasa si eliminamos los registros con delete, no se reseteara el valor autoincremental.
DELETE FROM `user` WHERE `id`=1; DELETE FROM `user` WHERE `id`=2;
Si ingresamos un nuevo registro su id sera 3.
INSERT INTO `user`(`name`,`email`) VALUES('Usuario Tres','tres@gmail.com');
Para resolver este problema una vez que hallamos borrado nuestros registros de la tabla, ejecutemos el script para reseter los valores autoincrement de cada tabla.
ALTER TABLE `user` AUTO_INCREMENT=1
Otra forma de borrar y resetar a la vez es usar la función TRUNCATE de MySQL, esta función limpia la tabla de registros y si tiene un campo autoincremental lo resetea.
TRUNCATE `user`
Ya se que es mucho mas fácil pero lo puse al final, ya que en nuestros proyectos la forma que usamos para borrar los registros en usando el sistema y de paso probandolo y no con scripts directos en la DB.
Hola, por alguna rara razon no me resetea la consulta :
ALTER TABLE `user` AUTO_INCREMENT=1
es raro?? se que deberia resetear pero no hay cambios, quiero resetear una tabla sin borrar los registros anteriores
gracias por la info
Wao!! fenomenal… muchas gracias por compartir… si vale k hallas puesto mas de una solucion… ver diferentes soluciones aumenta tbn el analizis de como dar soluciones a otras cosas semejantes…
[…] Resetear autoincrement en MySQL Se puede utilizar la instrucción: ALTER TABLE `NombreTabla` AUTO_INCREMENT=1 o si quieres ponerte un poco agresivo y de plano no te interesa el contenido de la tabla, utiliza el siguiente comando, para borrar todo y reiniciar el autoincrement de paso: TRUNCATE `NombreTabla` Enlace […]
Comments are closed.