Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/06/2005, 21:06
leonardop
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
En MySQL, los campos con el atributo AUTO_INCREMENT son creados originalmente para que sus números no sean re-utilizados (por lo menos cuando la columna en cuestión no hace parte de un índice multi-columna). Esto quiere decir que no hay forma directa de hacer lo que mencionas.

En cualquier caso, una forma de lograr que los índices se restablezcan, es como efecto secundario de eliminar/recrear la columna en cuestión, pero en ese caso es importante encargarse también, y manualmente, del traslado de los datos y la corrección de referencias desde otras tablas/campos hacia el valor del campo AUTO_INCREMENT que se está restableciendo.

Por otra parte, es posible usar "ALTER TABLE" para restablecer el índice actual de un campo AUTO_INCREMENT pero únicamente con valores > n, en donde n es el índice más alto actualmente almacenado en el campo. Por ejemplo, en un campo AUTO_INCREMENT con los siguientes valores:

2
3
4

Al ejecutar
Código:
ALTER TABLE nombre_tabla AUTO_INCREMENT=50
el siguiente registro insertado tendrá el valor 50 en el campo AUTO_INCREMENT, pero si se ejecuta algo como
Código:
ALTER TABLE nombre_tabla AUTO_INCREMENT=1
el índice de incremento no se modifica y el siguiente valor de incremento será 5, como sería de esperar.

En general, hacer lo que deseas (restablecer el orden secuencialmente desde 1) tiene implicaciones de las que hay que cuidarse (principalmente la integridad referencial desde índices foráneos) y ningún beneficio real, a menos que necesites desesperadamente de la ganancia en espacio cuando se corre el riesgo de que se agoten los índices (cosa que por lo demás no debería ocurrir si eliges acertadamente el tipo de dato del campo), de modo que mi sugerencia es que no te preocupes por restablecer esa secuencia.