¿Qué es el incremento automático?
La ampliación automática es una función que opera con tipos de datos numéricos. Genera automáticamente valores secuenciales numéricos cada vez que se ingresa un registro en una tabla para un campo definido como incremento automático.
¿Cuándo se usa el incremento automático?
En la lección sobre normalización de bases de datos, analizamos cómo se pueden almacenar los datos sin mucha redundancia, almacenando datos en muchas tablas pequeñas relacionadas utilizando claves primarias y externas.
Una clave primaria debe ser única porque identifica de forma única un conjunto en una base de datos. Pero, ¿cómo podemos asegurarnos de que la clave principal sea siempre única? Una posible solución es usar una fórmula para generar la clave primaria, que verifica que la clave esté presente, en la tabla, antes de agregar datos. Esto puede funcionar bien, pero como puede ver, el enfoque es complicado y no se puede defender. Para evitar tal complejidad y garantizar que la clave principal sea siempre única, podemos utilizar la función de incremento automático de MySQL para generar claves primarias. Se utiliza un incremento automático 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 de una clave primaria incremental automática.
Sintaxis incremental automática
Ahora miramos 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`) );
darse cuenta el «AUTO_INCREMENT» en el campo category_id. Esto hace que la categoría Id se genere automáticamente cada vez que se agrega una nueva fila a la tabla. No se proporciona cuando se ingresan datos en la tabla, MySQL los genera.
De forma predeterminada, el valor inicial de AUTO_INCREMENT es 1 y aumentará en 1 por cada nuevo registro
Examinamos el contenido actual de la tabla de categorías.
SELECT * FROM `categories`;
La ejecución del script anterior en un banco de trabajo MySQL 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
Agreguemos una nueva categoría a la tabla de categorías ahora.
INSERT INTO `categories` (`category_name`) VALUES ('Cartoons');
La ejecución del script anterior contra myflixdb en un banco de trabajo MySQL 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 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 un incremento automático.
Si desea obtener la última identificación de inicio de sesión generada 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 generada.
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
- Un 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. Al definir TINYINT como el tipo de datos para un campo auto-incremental, el número de registros que se pueden agregar a la tabla se limita a 255 porque el tipo de datos TINYINT no aceptaría valores más allá de eso.
- Se considera una buena práctica especificar la restricción sin firmar en las claves primarias incrementales automáticas para evitar números negativos.
- Cuando se elimina una fila de una tabla, su identificación automática incremental no se usa. MySQL continúa generando nuevos números de forma secuencial.
- De forma predeterminada, el valor inicial de AUTO_INCREMENT es 1 y aumentará en 1 por cada nuevo registro
- Para permitir que la secuencia AUTO_INCREMENT comience con otro valor, use AUTO_INCREMENT = 10