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

Reiniciar autonumerico mysql

Estas en el tema de Reiniciar autonumerico mysql en el foro de Mysql en Foros del Web. Hola que tal..... Bueno, tengo un capo autonumerico en una tabla en mysql y no se como reiniciarlo ¿Alguien sabe como hacerlo sin eliminar la ...
  #1 (permalink)  
Antiguo 13/06/2005, 23:40
Avatar de Hager  
Fecha de Ingreso: mayo-2005
Ubicación: Bogota, Colombia
Mensajes: 106
Antigüedad: 18 años, 11 meses
Puntos: 2
Pregunta Reiniciar autonumerico mysql

Hola que tal.....
Bueno, tengo un capo autonumerico en una tabla en mysql y no se como reiniciarlo
¿Alguien sabe como hacerlo sin eliminar la tabla (ya que es tedioso por que tiene bastantes campos)?
__________________
:cool: Nadie enseña a nadie...
todos aprendemos de todos....!!!
  #2 (permalink)  
Antiguo 14/06/2005, 06:39
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 7 meses
Puntos: 18
pregunta en el foro de bases de datos.
  #3 (permalink)  
Antiguo 13/07/2006, 14:03
 
Fecha de Ingreso: julio-2006
Mensajes: 4
Antigüedad: 17 años, 9 meses
Puntos: 0
De acuerdo reiniciar autonumerico

la solucion es la siguiente:
ALTER TABLE nombre_tabla AUTO_INCREMENT=valor
  #4 (permalink)  
Antiguo 13/07/2006, 14:04
 
Fecha de Ingreso: julio-2006
Mensajes: 4
Antigüedad: 17 años, 9 meses
Puntos: 0
ALTER TABLE nombre_tabla AUTO_INCREMENT=valor
  #5 (permalink)  
Antiguo 13/07/2006, 14:06
 
Fecha de Ingreso: julio-2006
Mensajes: 4
Antigüedad: 17 años, 9 meses
Puntos: 0
Cita:
Iniciado por Hager
Hola que tal.....
Bueno, tengo un capo autonumerico en una tabla en mysql y no se como reiniciarlo
¿Alguien sabe como hacerlo sin eliminar la tabla (ya que es tedioso por que tiene bastantes campos)?
ALTER TABLE nombre_tabla AUTO_INCREMENT=valor
  #6 (permalink)  
Antiguo 19/12/2008, 12:42
 
Fecha de Ingreso: diciembre-2008
Mensajes: 2
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Reiniciar autonumerico mysql

En primera si tienes un campo autonumerico y quieres reiniciarlo, cuando aun esten los datos...

por ejemplo si tienes uana tabla llamada "personas" con 4 registros y 3 campos: autoincrement, nombre, edad

1, pepito, 18
2, juanito, 12
3, dianita, 22
4, adrianita, 21

puedes usar el codigo:

ALTER TABLE personas AUTO_INCREMENT=1

Pero si no borraste ningun campo, MySQL detectara que ya hay un registro con el numero 1 y con el 2 y con el 3 y con el 4, y el siguiente registro en insertar lo pndra con el numero 5,

5, gonzalito, 6

y automaticamente se pondra el valor autoincrement en 6 esperando asignarselo al siguiente registro...

Si lo que quieres es un folio autoincrement y poderlo reiniciar tendras que hacerlo con una tabla externa...

por ejemplo una tabla "folios" donde tenga un autoincrement, un campo que te haga identificar a la persona que se registro puede ser la fecha con horas minutos y segundos...


Por ejemplo al registrar a alguien lo registras en esa tabla folios se le genera su numero, y obviamente guardando el dato fe la fecha con todo y segundos para poderlo puscar posteriormente de guardarlo en la tabla folios y asi leer que numero se le asigno a esa persona y ya ese numero es el que le insertas en la tabla de personas...


quiza te revolviste mas...


el punto es que no pdoras reiniciar folios a un numero el cual ya este registrado...
  #7 (permalink)  
Antiguo 19/12/2008, 14:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Reiniciar autonumerico mysql

Veamos...
De tanto en tanto surge nuevamente este tema y en general lo que quieren hacer es siempre lo mismo: renumerar. Hace un tiempo tres foristas preguntaron este asunto y te paso a comentar lo que les dije a ellos:

1. No es conveniente "reorganizar" un índice autoincremental porque en esencia es una tarea sin funcionalidad, carente de practicidad y consumidora innecesaria de tiempo de proceso.

2. El renumerar las PRIMARY KEY de un campo incremental no produce ninguna mejora en la optimización de consultas, por lo que hacerlo solamente resulta en tiempo de PC consumido.

3. Renumerar un campo autoincremental, genera un nuevo ordenamiento FISICO de los datos (una PK genera un índice cluster), con la consiguiente sobrecarga del microprocesador, porque tiene que reescribir físicamente la tabla cada vez y reconstruir el índice completamente.

4. Tampoco es recomendable bajo ninguna circunstancia renumerar una PK (es el caso en MySQL donde un AUTOINCREMENT es PK por default) si se usa como FK de otras tablas, porque generará inconsistencia de datos entre registros de tablas relacionadas.

5. No se recomienza renumerar si existen datos históricos de otras transacciones, que hacen referencia a otros registros que tenían el mismo número. De hecho, en una tabla de stock, las ID jamás cambian porque el hecho que un producto ya no exista ni se fabrique no quiere decir que no aparezca en registros más antiguos. Pisar un ID sería lo mismo que ponerle a un recién nacido el número de documento de un muerto.

6. Por otro lado, ¿qué te importa que tengas espacios de números que ya no usas, en tanto la numeración sea secuencial e incremental? ¿para qué perder tiempo en renumerar?, ¿para que quede más lindo? . Eso lo puedes hacer perfectamente en la interfase, donde visualizas la tabla de datos.

7. SI tu temor es quedarte sin números para usar, un ID generado en un campo numérico UNSIGNED tiene estos rangos:

- TINYINT: 0 a 255.
- SMALLINT: 0 a 65.535.
- MEDIUMINT: a 16.777.215
- INT: 0 a 4.294.967.295.
- BIGINT: 0 a 18.446.744.073.709.551.615

¿Esperas usar más IDs que eso?

No creo que te debas preocupar por el asunto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 29/12/2010, 09:30
 
Fecha de Ingreso: junio-2009
Mensajes: 13
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Reiniciar autonumerico mysql

A ver, si la columna autonumérica o autoincremental es Primary Key (PK), y a su vez otras tablas tienen integridad referencial a través de una Foreign Key(FK) con la tabla a la que se quiere cambiar la numeración, el motor no lo hará nunca porque en algún punto se estaría violando la integridad referencial, ya que al haber menos registros en la tabla padre, quedarán necesariamente registros huérfanos en las tablas hijas.

La verdad es que no conozco muy a fondo el MySQL ya que yo trabajo diariamente con un motor Informix, en donde esto que explico sucedería.

Saludos!

Gustavo Echenique
  #9 (permalink)  
Antiguo 29/12/2010, 10:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Reiniciar autonumerico mysql

Cita:
A ver, si la columna autonumérica o autoincremental es Primary Key (PK), y a su vez otras tablas tienen integridad referencial a través de una Foreign Key(FK) con la tabla a la que se quiere cambiar la numeración, el motor no lo hará nunca porque en algún punto se estaría violando la integridad referencial, ya que al haber menos registros en la tabla padre, quedarán necesariamente registros huérfanos en las tablas hijas.

La verdad es que no conozco muy a fondo el MySQL ya que yo trabajo diariamente con un motor Informix, en donde esto que explico sucedería.
Estás llegando tarde al tema (el post ya tiene años), y además no estás considerando dos cosas:
1) MySQL no maneja un sólo motor de tablas, sino varios, y sólo uno (InnoDB) posee restricciones de FK. El resto hay que manejarlo por programación... con lo que el problema existe.
2) En el motor InnoDB, si has puesto la cláusula ON UPDATE CASCADE, puedes perfectamente cambiar una PK y jamás te producirá problemas... hasta que las consultas resulten inconsistentes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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.
Tema Cerrado

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 12:14.