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;
`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');
INSERT INTO `recibos` (`anio`) VALUES ('2010'), ('2010'), ('2010'), ('2011'), ('2011');
/* Mostramos los datos */
SELECT * FROM `recibos`;
El resultado sería:
CODE:
+------+----+
| anio | ID |
+------+----+
| 2010 | 1 |
| 2010 | 2 |
| 2010 | 3 |
| 2011 | 1 |
| 2011 | 2 |
+------+----+
| anio | ID |
+------+----+
| 2010 | 1 |
| 2010 | 2 |
| 2010 | 3 |
| 2011 | 1 |
| 2011 | 2 |
+------+----+
La limitación es que este tipo artificio sólo funciona en tablas del tipo MyISAM.
One reply on “Reiniciar auto_increment cada año en MySQL”
[...] This post was mentioned on Twitter by brau, Buayacorp. Buayacorp said: RT @brau: Iniciando auto_increment cada año http://bit.ly/dtThtq #mysql [...]