sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo reinicio los números de secuencia para que sean consecutivos?

Si el campo es su clave principal...

... entonces, como se indica en otra parte de esta pregunta, no debería cambiar las identificaciones. Las identificaciones ya son únicas y no necesita ni desea reutilizarlas.

Ahora, dicho eso...

De lo contrario...

Es muy posible que tengas un diferente (es decir, así como el PK) para algunos pedidos definidos por la aplicación. Siempre que este orden no sea inherente a algún otro campo (por ejemplo, si está definido por el usuario), no hay nada de malo en ello.

Podría recrear la tabla usando un auto_increment (temporal) y luego elimine el auto_increment después.

Estaría tentado a UPDATE en orden ascendente y aplicar una variable incremental.

SET @i = 0;
UPDATE `table`
   SET `myOrderCol` = @i:[email protected]+1
 ORDER BY `myOrderCol` ASC;

Parece un desperdicio hacer esto siempre elimina elementos, pero desafortunadamente con este enfoque de pedido manual no hay mucho que pueda hacer al respecto si desea mantener la integridad de la columna.

Posiblemente podría reducir la carga, de modo que después de eliminar la entrada con myOrderCol igual a, digamos, 5 :

SET @i = 5;
UPDATE `table`
   SET `myOrderCol` = @i:[email protected]+1
 WHERE `myOrderCol` > 5
 ORDER BY `myOrderCol` ASC;

Esto "barajará" todos los valores siguientes en uno.