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

Generart Codigos no repetidos

Estas en el tema de Generart Codigos no repetidos en el foro de Bases de Datos General en Foros del Web. No se si existe este tema ya en el foro, no lo he encontrado. Tengo una base de datos con una tabla solicitante en la ...
  #1 (permalink)  
Antiguo 22/01/2009, 12:28
 
Fecha de Ingreso: enero-2009
Mensajes: 8
Antigüedad: 15 años, 10 meses
Puntos: 0
Generart Codigos no repetidos

No se si existe este tema ya en el foro, no lo he encontrado.

Tengo una base de datos con una tabla solicitante en la que puedo usar el dni como campo clave pero despues tengo una tabla solicitud en la que el usuario pide unos arboles y unos animales y entocnes se crea esa solicitud.

Mi problema es que habia pensado en incrementar en uno el ultimo CodigoSolicitud pero claro me acabo de dar cuenta de que si hay mas de una persona accediendo a la base de datos al mismo tiempo, esto cascaria.

Existe algun algoritmo o conoceis alguno para hacer esos codigos de solicitud y que no se repitan, apartir del dni o de alguna otra forma?
Habia pensado en hacer numeros aleatorios, pero podria darse el mismo caso, aunque sería la ostia de raro o incluso que ya este ese numero en la base de datros, aunque lo podria crear y comprobarlo y sino crear otro hasta ke no exista.

Un saludo y gracias.
  #2 (permalink)  
Antiguo 22/01/2009, 12:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Generart Codigos no repetidos

Hola elbores,

Si tu campo es auto-increment, no vas a notar ese problema, ya que el generador de códigos es inteligente para no colisionar con el mismo.

Pero si no estas usando una forma así entonces eso lo tienes que resolver en la logica de tu aplicación no en la base de datos.

Saludos
  #3 (permalink)  
Antiguo 23/01/2009, 04:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Generart Codigos no repetidos

Además de lo que te aclara GatorV, hay que tener en cuenta que si hay usuarios con procesos concurrentes en la tabla, la misma no debe permitir actualizaciones hasta que uno de ellos no termine el insert.
En otras palabras, debes tratar de usar tablas InnoDB y transacciones. De esa forma ayudarás a que no se generen conflictos.
Respecto de las autonumeraciones, poseen la ventaja de no tener que ingresar ese número: de eso se encarga la el motor de base de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 23/01/2009, 06:20
 
Fecha de Ingreso: enero-2009
Mensajes: 8
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Generart Codigos no repetidos

Hola de nuevo, gracias por las respuestas.
Estoy utilizando PhpMyAdmin y la verdad que no conocia lo de el campo auto_increment.

Mi pregunta es, al dar de alta un solicitante o una solicitud que dato se le pasa por la consulta Sql a la hora de hacer el insert? o no haria falta pasarle nada, la base de datos ya incrementaria sin pasarle ese CodSolicitante/CodSolicitud?

Gracias y un saludo.
  #5 (permalink)  
Antiguo 23/01/2009, 06:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Generart Codigos no repetidos

El incremento de un autonumérico es automático y administrado por MySQL, en ese caso. Lo que hay que tener en cuenta es que se deben declarar los campos a ingresar en forma específica porque se está insertando un valor menos, y la cantidad de columnas no coincidiría.
Eso es simplemente, en una tabla de cuatro campos, por ejemplo hacer una cosa así:
Código SQL:
Ver original
  1. INSERT INTO TABLA1(campo2, campo3, campo4)
  2. VALUES(valor1, valor2, valor3);
Como el campo1 sería el autonumérico, no se ingresa.
¿Se comprende?
__________________
¿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/01/2009, 07:26
 
Fecha de Ingreso: enero-2009
Mensajes: 8
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Generart Codigos no repetidos

Si si perfectamente, ahora lo pruebo si tengo alguna duda os lo comento.
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 14:29.