Reordenar/restablecer la clave primaria de incremento automático

Resuelto Jonathan asked hace 15 años • 17 respuestas

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?

Jonathan avatar Apr 11 '09 23:04 Jonathan
Aceptado

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 CASCADEen lugar del valor predeterminado ON UPDATE NO ACTIONpara la relación de clave externa en esas tablas.

Además, para restablecer el AUTO_INCREMENTrecuento, puede emitir inmediatamente la siguiente declaración.

ALTER TABLE `users` AUTO_INCREMENT = 1;

Para MySQL restablecerá el valor a MAX(id) + 1.

Anshul avatar Mar 25 '2011 20:03 Anshul

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á.

Tom Haigh avatar Apr 11 '2009 16:04 Tom Haigh