Resetear auto_increment en MySQL

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.

También te puede interesar

4 Comments

  1. Derleth
    jun 25, 2009 @ 10:18:59

    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

  2. fernando
    jun 17, 2010 @ 15:28:05

    gracias por la info

  3. Syslock64
    sep 14, 2010 @ 18:14:36

    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…

  4. Consejos MySQL « Irving Blog
    nov 11, 2011 @ 22:34:58

    [...] 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 [...]