Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Reestablecer auto_increment al número que yo quiera

Estas en el tema de Reestablecer auto_increment al número que yo quiera en el foro de Mysql en Foros del Web. Tengo un problema con la clae primaria de una tabla, a la que auto_increment le está asignando números por encima de donde debería ir, ya ...
  #1 (permalink)  
Antiguo 13/10/2005, 06:30
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 11 meses
Puntos: 3
Reestablecer auto_increment al número que yo quiera

Tengo un problema con la clae primaria de una tabla, a la que auto_increment le está asignando números por encima de donde debería ir, ya que por un error se ha saltado unos números.

Tengo 3 registros 0,1,2, pero auto_increment ya lo tengo por 7 o 8.

Cómo lo hago para que el próximo registro sea automáticamente el 3?
  #2 (permalink)  
Antiguo 13/10/2005, 08:34
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Si estas usando campos auto_increment, NO podes jugar con la secuencia ya que el manejador de BD administra dicha secuencia. Por ejemplo, si tenes 20 tuplas, tu campo auto_increment va a estar en 20 (tomando en cuenta que no has borrado nada) pero si borras todos los campos o algunos para luego agregar más, la secuencia va a continuar a 21, 22 etc.

Por eso es que estas viendo esos "huecos". Si queres tener el control total de la secuencia, declara el campo numérico y asignale la secuencia manual.

Si queres reiniciar el campo auto_increment, debes usar la siguiente sentencia:
Código PHP:
ALTER TABLE tabla_con_auto_increment AUTO_INCREMENT 100 
iniciaría con 100

Código PHP:
ALTER TABLE tabla_con_auto_increment AUTO_INCREMENT 
iniciaría en 1

También ES MUY IMPORTANTE averiguar en la web del producto. En este caso MySQL para aclarar tus dudas. Ahí estan todas las referencias del producto bien explicadas.
3.6.9. Using AUTO_INCREMENT
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 14/10/2005, 04:44
 
Fecha de Ingreso: mayo-2003
Mensajes: 527
Antigüedad: 20 años, 11 meses
Puntos: 3
ok Muchas gracias BrujoNic. Hay alguna forma de que MySQL reordene una tabla de modo que suprima los huecos del id y se junten los registros? Por ejemplo, si tengo los registros con estos id's: 0, 1, 2, 7, 10, 15. Hay alguna forma sencilla de hacer que las claves primarias de esos 6 registros pasen a ser automáticamente 0, 1, 2, 3, 4, 5?
  #4 (permalink)  
Antiguo 14/10/2005, 08:57
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Cita:
Iniciado por BrujoNic
Si estas usando campos auto_increment, NO podes jugar con la secuencia ya que el manejador de BD administra dicha secuencia. Por ejemplo, si tenes 20 tuplas, tu campo auto_increment va a estar en 20 (tomando en cuenta que no has borrado nada) pero si borras todos los campos o algunos para luego agregar más, la secuencia va a continuar a 21, 22 etc.

Por eso es que estas viendo esos "huecos". Si queres tener el control total de la secuencia, declara el campo numérico y asignale la secuencia manual.
Lee el segundo párrafo...

Te lo repito, si queres llevar el control total, debes declarar un campo numérico normal y por cada registro que borres, tendrías que hacer una función para recorrer SECUENCIALMENTE la tabla para reacomodar esas secuencias. ¿Vale la pena?, si tenes una tabla con 300 o menos registros es despreciable el tiempo, o sea, no se nota pero... Si tenes una tabla de más de 1000, ahi vas a ver que NO vale la pena.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:35.