Reordenar/restablecer la clave primaria de incremento automático
Tengo una tabla MySQL con una clave primaria de incremento automático. Eliminé algunas filas en el medio de la tabla. Ahora tengo, por ejemplo, algo como esto en la columna ID: 12, 13, 14, 19, 20. Eliminé las filas 15, 16, 17 y 18.
Quiero reasignar/restablecer/reordenar la clave primaria para que tenga continuidad, es decir hacer del 19 a 15, del 20 a 16, etcétera.
¿Cómo puedo hacerlo?
Aunque esta pregunta parece ser bastante antigua, publicaré una respuesta para alguien que busque aquí.
SET @count = 0;
UPDATE `users` SET `users`.`id` = @count:= @count + 1;
Si la columna se usa como clave externa en otras tablas, asegúrese de usarla ON UPDATE CASCADE
en lugar del valor predeterminado ON UPDATE NO ACTION
para la relación de clave externa en esas tablas.
Además, para restablecer el AUTO_INCREMENT
recuento, puede emitir inmediatamente la siguiente declaración.
ALTER TABLE `users` AUTO_INCREMENT = 1;
Para MySQL restablecerá el valor a MAX(id) + 1
.
Puede eliminar la columna de clave principal y volver a crearla. Luego, todos los identificadores deben reasignarse en orden.
Sin embargo, esto probablemente sea una mala idea en la mayoría de las situaciones. Si tiene otras tablas que tienen claves externas para esta tabla, definitivamente no funcionará.