MySQL AUTO_INCREMENT con ejemplos
ยฟQuรฉ es el incremento automรกtico?
El incremento automรกtico es una funciรณn que opera con tipos de datos numรฉricos. Genera automรกticamente valores numรฉricos secuenciales cada vez que se inserta un registro en una tabla para un campo definido como incremento automรกtico.
ยฟCuรกndo se utiliza el incremento automรกtico?
En la lecciรณn sobre normalizaciรณn de bases de datos, vimos cรณmo se pueden almacenar datos con una redundancia mรญnima, almacenรกndolos en muchas tablas pequeรฑas, relacionadas entre sรญ mediante claves primarias y externas.
Una clave principal debe ser รบnica, ya que identifica de forma รบnica una fila en una base de datos. Pero, ยฟcรณmo podemos asegurarnos de que la clave principal sea siempre รบnica? Una de las posibles soluciones serรญa utilizar una fรณrmula para generar la clave principal, que compruebe la existencia de la clave en la tabla antes de aรฑadir datos. Esto puede funcionar bien, pero como puede ver, el enfoque es complejo y no infalible. Para evitar dicha complejidad y garantizar que la clave principal sea siempre รบnica, podemos utilizar MySQLFunciรณn de incremento automรกtico de 's para generar claves principales. El incremento automรกtico se utiliza con el tipo de datos INT. El tipo de datos INT admite valores con y sin signo. Los tipos de datos sin signo solo pueden contener nรบmeros positivos. Como prรกctica recomendada, se recomienda definir la restricciรณn sin signo en la clave principal de incremento automรกtico.
Sintaxis de incremento automรกtico
Veamos ahora el guiรณn utilizado para crear la tabla de categorรญas de pelรญculas.
CREATE TABLE `categories` ( `category_id` int(11) AUTO_INCREMENT, `category_name` varchar(150) DEFAULT NULL, `remarks` varchar(500) DEFAULT NULL, PRIMARY KEY (`category_id`) );
Observe el "AUTO_INCREMENT" en el campo categor_id. Esto hace que el ID de categorรญa se genere automรกticamente cada vez que se inserta una nueva fila en la tabla. No se suministra al insertar datos en la tabla, MySQL lo genera.
De forma predeterminada, el valor inicial de AUTO_INCREMENT es 1 y se incrementarรก en 1 por cada nuevo registro.
Examinemos el contenido actual de la tabla de categorรญas.
SELECT * FROM `categories`;
Ejecutando el script anterior en MySQL El banco de trabajo contra myflixdb nos da los siguientes resultados.
| category_id | category_name | remarks |
|---|---|---|
| 1 | Comedy | Movies with humour |
| 2 | Romantic | Love stories |
| 3 | Epic | Story acient movies |
| 4 | Horror | NULL |
| 5 | Science Fiction | NULL |
| 6 | Thriller | NULL |
| 7 | Action | NULL |
| 8 | Romantic Comedy | NULL |
Ahora insertemos una nueva categorรญa en la tabla de categorรญas.
INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');
Ejecutando el script anterior contra myflixdb en MySQL banco de trabajo nos da los siguientes resultados que se muestran a continuaciรณn.
| category_id | category_name | remarks |
|---|---|---|
| 1 | Comedy | Movies with humour |
| 2 | Romantic | Love stories |
| 3 | Epic | Story acient movies |
| 4 | Horror | NULL |
| 5 | Science Fiction | NULL |
| 6 | Thriller | NULL |
| 7 | Action | NULL |
| 8 | Romantic Comedy | NULL |
| 9 | Cartoons | NULL |
Tenga en cuenta que no proporcionamos la identificaciรณn de la categorรญa. MySQL lo generรณ automรกticamente para nosotros porque la identificaciรณn de la categorรญa estรก definida como incremento automรกtico.
Si desea obtener la รบltima identificaciรณn de inserciรณn generada por MySQL, puedes usar la funciรณn LAST_INSERT_ID para hacerlo. El script que se muestra a continuaciรณn obtiene la รบltima identificaciรณn que se generรณ.
SELECT LAST_INSERT_ID();
La ejecuciรณn del script anterior proporciona el รบltimo nรบmero de incremento automรกtico generado por la consulta INSERT. Los resultados se muestran a continuaciรณn.
Resumen
- El atributo de incremento automรกtico cuando se especifica en una columna con tipos de datos numรฉricos, genera nรบmeros secuencialmente cada vez que se agrega una nueva fila a la base de datos.
- El incremento automรกtico se usa comรบnmente para generar claves primarias.
- El tipo de datos definido en el incremento automรกtico debe ser lo suficientemente grande para dar cabida a muchos registros. Definir TINYINT como el tipo de datos para un campo de incremento automรกtico limita la cantidad de registros que se pueden agregar a la tabla a 255 solo, ya que cualquier valor mรกs allรก de eso no serรญa aceptado por el tipo de datos TINYINT.
- Se considera una buena prรกctica especificar la restricciรณn sin signo en las claves primarias de incremento automรกtico para evitar tener nรบmeros negativos.
- Cuando se elimina una fila de una tabla, su identificaciรณn incrementada automรกticamente no se reutiliza. MySQL continรบa generando nuevos nรบmeros secuencialmente.
- De forma predeterminada, el valor inicial de AUTO_INCREMENT es 1 y se incrementarรก en 1 por cada nuevo registro.
- Para permitir que la secuencia AUTO_INCREMENT comience con otro valor, use AUTO_INCREMENT = 10

