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.

Tags:  

 

Posteado el: 13/01/2009  por: Craftyman

Post Relacionados

Comentarios