viernes, 24 de agosto de 2012

Reiniciar secuencia en MySql

En innumerables ocasiones nos encontramos que los sistemas que utilizamos tiran de tablas donde el id es un secuencia. Con normalidad los secuenciales son utilizados como id de una tabla de tal manera que al ir insertando datos va incrementándose el id. Al listar los datos de una tabla, estos id´s no tienen por que ser consecutivos porque al borrar una fila esa tupla desaparece pero el secuencial no mete ese valor del id otra vez en la secuencia y si insertamos un nuevo registro continuará con la numeración que tiene el secuencial. Supongamos que tengo esta tabla:

id  nombre
1   Pepe
2   Pepo
3   Pepi

Si elimino el registro con id 2 el secuencial tendría como siguiente id el 4 y si inserto un nuevo dato tendríamos que los id´s que tenemos son 1,3 y 4:

id  nombre

1   Pepe
3   Pepi
4   Pipo

En el caso de que esto pase en una tabla en la cual el id es vital para el negocio (por ejemplo una tabla que contenga facturas y que el número de factura sea el del id) tendremos, cada vez que eliminemos alguna, que indicarle a la secuencia que el siguiente valor es otro número distinto al que tiene para que continúe desde el que le indiquemos la secuencia.

Para reiniciar una secuencia y que empiece desde el número que nosotros queramos, tenemos que lanzar:

ALTER TABLE <tabla> AUTO_INCREMENT= 1
 
Donde el valor 1 del AUTO_INCREMENT es el valor que va a utilizar para la siguiente inserción 
y la tabla es la tabla sobre la que queremos inicializar la secuencia.
 
 

No hay comentarios:

Publicar un comentario