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

consecutivos php y mysql

Estas en el tema de consecutivos php y mysql en el foro de Mysql en Foros del Web. bueno, primero que todo no supe donde colocar este tema.. asi que disculpen.. me pasa lo siguiente, he creado en mi base de datos un ...
  #1 (permalink)  
Antiguo 15/01/2010, 08:19
 
Fecha de Ingreso: noviembre-2009
Ubicación: Barranquilla
Mensajes: 54
Antigüedad: 10 años, 3 meses
Puntos: 0
Pregunta consecutivos php y mysql

bueno, primero que todo no supe donde colocar este tema.. asi que disculpen..

me pasa lo siguiente,
he creado en mi base de datos un tabla con un campo autoincrement...
pero al momento de eliminar un campo este no se me vuelve a llenar..
o sea obvio el funcionamiento del autoincrement es "el valor anterior mas uno" ..
como hago para que al momento de crear un campo nuevo se me llene en el espacio que quedo vacio..

hay alguna forma de hacer esto?
gracias!
  #2 (permalink)  
Antiguo 15/01/2010, 08:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: consecutivos php y mysql

Ese no es el concepto de AUTO_INCREMENT.

El autoincremental en MySQl es una secuencia , objeto muy importante, controlada por el motor de la base de datos, y un atributo de la tabla, tal que debe ser usado únicamente como PRIMARY KEY.

En este último sentido es que no puede "volver a llenarse", como dices, porque un campo que ha sido PK de un registro, por más que haya dejado de existir, existió, y el contenido de tuvo estuvo identificado por ese valor. La repetición de un número entre dos registros referidos a objetos distintos es una viola,ción al modelo referencial y una grave inconsistencia en las bases de datos.

Por eso no se debe hacer.

Por otro lado, tienes que tener en cuenta esto, que ya le he posteado a otros foristas ante la misma pregunta:

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: 0 a 16.777.215
- INT: 0 a 4.294.967.295.
- BIGINT: 0 a 18.446.744.073.709.551.615
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 15/01/2010, 13:57
 
Fecha de Ingreso: noviembre-2009
Ubicación: Barranquilla
Mensajes: 54
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: consecutivos php y mysql

wooow.. :ojitos:
muchas gracias.. muy explicita tu respuesta..

pero resulta que quiero llenar esos espacios por que quiero visualizar ese codigo autoincrement,
como por ejemplo en una tabla estudiantes..
esta posee un codigo, unico.. y si solo el cliente pide que en su tabla se llenen 100 campos pues el cupo es para 100 personas.. con los digitos del 1-100..
teniendo encuenta que este codigo sera usado por los estudiantes..
..
si le he puedo que me reciba 3 digitos (1.0.0.)..
el funcionamiento del autoincrement .,.. cuando llegue al 999?..
si quiere agregar el siguiente campo?..
como lo hace?
vuelve a comenzar?..

.. existe alguna forma de poder usar ese codigo.. que ha sido usado por otro estudiante?.
.. no es tanto la cuestion de que se vea bonito.. si no de .. comodidad.. creo yo..
pues si hay un estudiante con el codigo.. 88 - pepito perez .. 89 - marianito martinez..
..
muchas gracias
  #4 (permalink)  
Antiguo 15/01/2010, 14:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: consecutivos php y mysql

Primero, si es un número que identifica a un estudiante en un curso, eso es otro nivel de numeraciones y deberías describir mejor el caso y las tablas para darte una solución, la cual se semejaría a la numeración de los subítems de una factura y no consiste en "renumerar" o reiniciar autoincrementales.
Esos casos se resuelven de otra forma.

Pero si lo que quieres es que un conjunto dado de registros te lleguen numerados secuencialmente, sin importar cómo sea que estén numerados en su tabla, la cosa se hace de dos formas diferentes:

1) Si lo que necesitas es que el usuario lo vea, entonces lo representas en la tabla de esa forma, lo que nada tiene que ver con la base. Eso es puro PHP, en tu caso.
2) El segundo caso se da resolviendo esa misma numeración en la consulta, lo cual puedes ver en esta FAQ: http://www.forosdelweb.com/f86/faqs-...1/#post2802568.
Léela y después seguimos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: php
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




La zona horaria es GMT -6. Ahora son las 23:57.