¿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 usar incremento automático?
En la lección sobre normalización de bases de datos, analizamos cómo se pueden almacenar los datos con una redundancia mínima, almacenando datos en muchas tablas pequeñas, relacionadas entre sí mediante claves primarias y externas.
Una clave primaria debe ser única, ya que identifica de forma exclusiva 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 primaria, que verifica la existencia de la clave, en la tabla, antes de agregar datos. Esto puede funcionar bien, pero como puede ver, el enfoque es complejo y no infalible. Para evitar tal complejidad y garantizar que la clave principal sea siempre única, podemos usar la función de incremento automático de MySQL para generar claves primarias. 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 firmar solo pueden contener números positivos. Como práctica recomendada, se recomienda definir la restricción sin firmar en la clave primaria 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 category_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 proporciona 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 para cada nuevo registro.
Examinemos el contenido actual de la tabla de categorías.
SELECT * FROM `categories`;
La ejecución del script anterior en MySQL workbench 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 |
Insertemos ahora una nueva categoría en la tabla de categorías.
INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');
La ejecución del script anterior contra myflixdb en MySQL workbench 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 se define como incremento automático.
Si desea obtener el último ID de inserción generado por MySQL, puede 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();
Al ejecutar el script anterior, se obtiene 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 el número de registros que se pueden agregar a la tabla a 255 solo, ya que cualquier valor más allá de ese 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 ID incrementado automáticamente no se reutiliza. MySQL continúa generando nuevos números de forma secuencial.
- De forma predeterminada, el valor inicial de AUTO_INCREMENT es 1 y se incrementará en 1 para cada nuevo registro.
- Para permitir que la secuencia AUTO_INCREMENT comience con otro valor, use AUTO_INCREMENT = 10