Categories
MySQL

Reiniciar auto_increment cada año en MySQL

Alguna vez vamos a necesitar reiniciar el contador del auto_increment cada año. Por ejemplo si tenemos una tabla recibos quisieramos que el número de recibo empieze desde 1 el año siguiente.

Para esto hay un pequeño artificio en MySQL que nos puede ayudar:

SQL:

CREATE TABLE `recibos` (
  `anio` year(4) NOT NULL,
  `ID` int(5) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY  (`anio`,`ID`)
) ENGINE=MyISAM;
 

El truco está en que el campo primario debe ser la composición de dos campos; donde la columna con AUTO_INCREMENT es la segunda columna del índice.

SQL:

/* Ingresamos datos */
INSERT INTO `recibos` (`anio`) VALUES ('2010'), ('2010'), ('2010'), ('2011'), ('2011');

/* Mostramos los datos */
SELECT * FROM `recibos`;
 

El resultado sería:

CODE:

+------+----+
| anio | ID |
+------+----+
| 20101 |
| 20102 |
| 20103 |
| 20111 |
| 20112 |
+------+----+

La limitación es que este tipo artificio sólo funciona en tablas del tipo MyISAM.