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:

Comentarios