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

[SOLUCIONADO] Auto_increment Mysql siempre parta de 1.

Estas en el tema de Auto_increment Mysql siempre parta de 1. en el foro de Mysql en Foros del Web. Hola tengo una consulta sobre el auto_increment, tengo una tabla con id y nombre asi; id | Nombre 1 | Juan 2 | David 3 ...
  #1 (permalink)  
Antiguo 22/06/2013, 11:53
 
Fecha de Ingreso: mayo-2013
Mensajes: 16
Antigüedad: 10 años, 11 meses
Puntos: 0
Auto_increment Mysql siempre parta de 1.

Hola tengo una consulta sobre el auto_increment,
tengo una tabla con id y nombre asi;

id | Nombre
1 | Juan
2 | David
3 | Antonio
7 | Ana


A Ana le asigne el valor 7 con el insert, osea no hay datos borrados entre Antonio y Ana.
Al insertar por ejemplo Teresa coje la id 8 y quiero que coja por si sola el 4 sin asignarselo con el insert.

¿es posible hacer esto?

gracias
  #2 (permalink)  
Antiguo 22/06/2013, 11:56
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: Auto_increment Mysql siempre parta de 1.

Un INSERT manual de un campo AUTOINCREMENT, no modifica la propiedad del AUTO_INCREMENT definido para la tabla. Son cosas separadas.
Lo que no tiene ningún sentido que hagas es que si usas un campo AI, le pongas el valor a mano... ¿Qué sentido tiene declararlo como tal, si no lo vas a dejar adminsitrar por MySQL?

Para modificar la propiedad AI e una tabla, debes modificar la estructura de la tabla. Con ALTER TABLE.
__________________
¿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 22/06/2013, 13:07
 
Fecha de Ingreso: mayo-2013
Mensajes: 16
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Auto_increment Mysql siempre parta de 1.

Aver la tabla registraria numeros y dnis de usuarios, pero quiero que cada usuario pueda seleccionar el numero del 0 al 99 si no selecciona ninguno que el autoincrement haga su funcion y le asigne uno.
el caso esque si alguien quiere el 99 el siguiente que solicite un numero sin introducir ninguno, el autoincrement se le asignaria el 100 y necesito del 0 al 99. espero haberme explicado bien.

Solo decirme si es posible hacerlo
  #4 (permalink)  
Antiguo 23/06/2013, 12:48
 
Fecha de Ingreso: mayo-2013
Mensajes: 16
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Autoincrement Mysql siempre parta de 1.

Nadie sabe si se puede hacer o no? lo que me gustaria q hiciese es rellenar los huecos entre numeros.
  #5 (permalink)  
Antiguo 23/06/2013, 12:54
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: Auto_increment Mysql siempre parta de 1.

Cita:
la tabla registraria numeros y dnis de usuarios, pero quiero que cada usuario pueda seleccionar el numero del 0 al 99 si no selecciona ninguno que el autoincrement haga su funcion y le asigne uno.
Primera pregunta básica: ¿Por qué quieres que un usuario pueda elegir un número que en definitiva sería asignado a un campo que es AI?
Eso no sólo no tiene mucho sentido. Tampoco tiene absolutamente ninguna utilidad y es contradictorio con la propiedad de autoincremental de ese campo.
El objeto de un AI es no sólo crear números únicos, sino hacer invisible al usuario ese comportamiento y función.

¿Por qué necesitas hacer eso?
Si lo explicas, es muy probable que te podamos decir qué cosas realmente te conviene hacer, en lugar de un proceso que parece ser erróneo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 23/06/2013, 17:01
 
Fecha de Ingreso: mayo-2013
Mensajes: 16
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Auto_increment Mysql siempre parta de 1.

Gnzsolyo gracias por el interes mostrado.
Mire le explico, lo mismo hay alguna forma de hacerlo que no sea con autoincrement.

Tengo una tabla que es de números de participaciones para un sorteo.
A la gente que page se le puede asignar el número solo(autoincrement) o que el usuario pueda elegir el número(insert manual). Tan sencillo como eso.

Podría hacerlo sin selección por parte del usuario solo con el AI, o sin el AI y que el usu seleccione el número siempre, lo cual si queda un solo numero de 100 tendria que ir probando hasta que uno estubiese disponible.

Otra idea que se me acaba de ocurrir es crear una función y que te ingrese un valor aleatorio que no este ya en la tabla, lo cual no se como hacerlo pero podría ser una solución.

¿alguna pista?

Gracias de nuevo.
  #7 (permalink)  
Antiguo 23/06/2013, 17:14
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: Auto_increment Mysql siempre parta de 1.

Cita:
¿alguna pista?
La más básica de todas: Lo que quieres hacer no tiene ninguna relación con autoincrementales, y ni siquiera tiene sentido usar un AI para eso.
Lo que quieres lograr, por lo que describes, es que un usuario pueda selecciona un número cualquiera en un rango del 000 al 999, para un sorteo. Pues para eso no usas un AI. Jamás.
Lo que tienes es que hacer lo mismo que ya dijiste:
Le das la oportunidad de que lo ingrese. Si ingresa el número, verificas en la base si ya se registró, y en caso de encontrarse, generas uno aleatoriamente en base a un algoritmo que incluya verificación a la base de los generados, o bien buscas el primero disponible en los "huecos" de la base.
En principio, la mayor parte de esto lo haces por programación, y no en la base de datos, por lo que es OFF-TOPIC en este foro. En tu contexto la base sólo interviene validando los números existentes (un simple SELECT contra un valor dado), o bien devolviendo la lista existente al momento, a fin de que la aplicación encuentre los huecos correspondientes.
Pero el AI en ningún momento es PK de la tabla, y por tanto no se lo puede usar, por restricciones de MySQL (si existe un AI, debe ser PK o parte de la PK, y no es el caso).
Lo único que te puedo recomendar, para asegurarte la unicidad de los valores, es que ese campo sea UNIQUE, a fin de que no se pueda ingresar dos veces el valor erróneamente. Pero para más precisión necesitaría conocer la estructura exacta (el CREATE TABLE) y el contexto de los sorteos, para verificar las condiciones que se necesitarían para permitir que el sistema se peuda usar en más de un sorteo (hacer el campo UNIQUE restringiría el sistema a un único sorteo).
Como sea, la mayor parte del tema está fuera de la competencia de la base de datos. ¿Eso se entiende?
No te servirá usar un AI para este proyecto.

Por lo demás, un campo numérico no puede restringirse en MySQL a un valor del rango 000 a 999, eso al menos no en cuanto estructura, porque no existen las constraint CHECK en MySQL, que sí existen en otros DBMS.

¿Se entiende todo esto?
__________________
¿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 24/06/2013, 05:57
 
Fecha de Ingreso: mayo-2013
Mensajes: 16
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Auto_increment Mysql siempre parta de 1.

Muchas gracias, pues intentare programarlo asi buscando el primer hueco en php e ingresarlo.

muchas gracias
  #9 (permalink)  
Antiguo 24/06/2013, 08:56
 
Fecha de Ingreso: mayo-2013
Mensajes: 16
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Auto_increment Mysql siempre parta de 1.

Ya lo consegui programandolo desde php buscando los huecos vacios.
Cita:
Editado: Código de programación no permitido en foros de Bases de Datos
Gracias por todo

Última edición por gnzsoloyo; 24/06/2013 a las 10:10 Razón: Código de programación no permitido en foros de Bases de Datos
  #10 (permalink)  
Antiguo 24/06/2013, 10:11
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: Auto_increment Mysql siempre parta de 1.

Lo siento, pero no se debe postear código de programación en estos foros.
(Ver http://www.forosdelweb.com/f86/funci...datos-1040766/)
Saludos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 24/06/2013, 15:53
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Auto_increment Mysql siempre parta de 1.

Aprovecho de realizar un aporte a lo que puso gnzsoloyo, a medida que vayas rellenando esa tabla, cada vez será mas difícil encontrar números disponibles aleatoriamente.

Al final llegará un momento en que el programa se te quedará pegado por no encontrar espacios libres.

yo creo que lo ideal sería que antes de insertar aleatoriamente contases cuantos registros ya hay en la tabla, si se acerca a llenarse te recomiendo hacer un loop secuencial y si ya está llena tendrías que negar la inserción.

saludos!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #12 (permalink)  
Antiguo 24/06/2013, 16:50
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: Auto_increment Mysql siempre parta de 1.

Es una excelente idea. El problema que te plantea @stramin es un tema que suele analizar en calculo de probabilidades y estadística, y es un tema severo.
Efectivamente, cuando los números a buscar se van agotando, el tiempo necesario para encontrar uno tiende a infinito...
__________________
¿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: insert, siempre, tabla
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 03:55.