mysql

Reiniciar contador de auto incremento en MySQL

Introducción

En MySQL podemos establecer una columna como autoincremento, es decir, que tenga una columna cuyo valor vaya aumentando en 1 automáticamente cada que ingresa un nuevo dato. Esto está genial, porque podemos utilizar esa columna como un identificador.

Todo muy bien hasta aquí, hasta que por alguna u otra razón necesitamos reiniciar ese contador. Ya que por ejemplo puede que tengamos algunos registros eliminados y entonces habrá “huecos” en nuestra tabla.

También puede darse el caso de que hayamos vaciado nuestra tabla y queremos que el contador comience desde 1.

Para ello es que escribo hoy esa entrada, para reiniciar y establecer al valor mínimo permitido el autoincremento.

Comando y explicación

Si no quieres ver el tutorial completo, la consulta es la siguiente:

ALTER TABLE nombre_de_la_tabla AUTO_INCREMENT = 1;

No te preocupes, el contador se pondrá al valor más bajo que tenga tu tabla. Por ejemplo, supongamos que tienes 10 registros de 100 que había (eliminaste 90 aleatoriamente) por lo que la secuencia del contador puede ir así:

1, 20, 21, 26, 31, 35, 36, 37, 38, 41

Tu autoincremento estará en 100, aunque en realidad el valor más grande que tienes es 41. Si insertas un nuevo registro, su valor será 101, no 42.

Lo que logras con esta consulta es resetear el contador al valor más bajo, que en este caso es 41. Y luego, al insertar el siguiente registro, su valor será 42.

Si quieres ver un ejemplo continúa leyendo…

Ejemplo

Para este ejemplo crearé una tabla de prueba llamada “nombres” que sólo tendrá dos columnas: un auto incremento y el nombre. La definición queda así:

CREATE TABLE nombres(
  rowid BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(255) NOT NULL
);

Ahora voy a insertar algunos valores….

INSERT INTO nombres(nombre) 
VALUES 
('Pedro'), 
('Juana'), 
('María'), 
('Roberto'), 
('Clarice');

Hasta ahora, los datos que tengo son estos:

Voy a eliminar los últimos 2 nombres:

DELETE FROM nombres WHERE rowid IN (4, 5);

Y ahora los datos que existen son los siguientes:

Aquí viene la parte crucial de este experimento. Si inserto un nuevo nombre, su rowid será el 6, aunque yo esperaba que fuera el 4. Vamos a insertarlo entonces:

INSERT INTO nombres(nombre) VALUES('José');

Pero al ver los datos, vemos que efectivamente el id que tomó es el 6:

Ahora eliminaré de nuevo ese nombre, es decir, el que tiene el rowid 6:

DELETE FROM nombres WHERE rowid = 6;

Y no insertaré un nuevo nombre justo ahora, sino que reiniciaré el contador:

ALTER TABLE nombres AUTO_INCREMENT = 1;

Ahora sí insertaré un nuevo nombre, cuyo rowid espero que sea 4:

INSERT INTO nombres(nombre) VALUES ('Julián');

Si selecciono los datos, veré que efectivamente el rowid es 4. Y eso comprueba que este método funciona perfectamente

Eso es todo por hoy

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.