Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 11-mar-2007, 12:34   #1 (permalink)
digdig ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2007
Mensajes: 13
Alegría Como generar localizador de reserva aleatorio tipo ZX32B1

Hola estoi montando una base datos para una agencia de reserva de cruceros en la que tengo una tabla con una clave primaria que viene a ser el identificador de la reserva que se le da al cliente al finalizar la compra.
La historia es que de momento esa clave es un entero que se autoincrementa tomando valores conecutivos. Quisiera saber si existe alguna forma de pedirle a mysql que genere una clave de 6 caracteres (dígitos y letras) pero con valores aleatorios no consecutivos teniendo en cuenta que no pueden repetirse.

Algunos ejemplos de localizadores podrían ser los siguientes:
TR45D3S
XZCC301
HLPO961


Con seis caracteres es más que suficiente porque cada uno puede tomar valores desde la A a la Z y del 0 al 9 es decir 37 valores distintos.
37 ^6 = 2.565.726.409 reservas posible.
En el peor de los casos la agencia podría realizar 600.000 reservas al año asi que me da de sobra. Al tomar valores aleatorios de alguna manera tengo que garantizar que entre reservas queden suficientes valores sin asignar para evitar que al tratar de asigmar un valor ya utilizado tenga bastantes probabilidades de encontrar aleatoriamente otro que este libre para usar.

Gracias por la ayuda y perdon por el rollo del final
digdig está desconectado   Responder Citando
Antiguo 11-mar-2007, 16:13   #2 (permalink)
santhy ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2006
Mensajes: 69
Re: Como generar localizador de reserva aleatorio tipo ZX32B1

Mejor que lo hagas programándolo y no dejando a MySQL solo con eso...

Si usas php podrías usar algo como
Código PHP:

function genera_aleatorio() {
$cars = array('0''1''2''3''4''5''6''7''8''9',
 
'A''B''C''D''E''F''G''H',
 
'I''J''K''L''M','N','O','P','Q',
 
'R','S','T','U','V','W','X','Y','Z');

$longitud 6;


$aleat '';
for(
$i 0$i $longitud$i++) {
$aleat .= $cars[rand(0count(cars))];
}

// Ahora consultas si ya existe.
// Si existe, vuelves a llamar a la funcion

$r mysql_query(SELECT FROM `tutablaWHERE id $aleat);
if(empty(
mysql_fetch_array($r))) {
 return 
$aleat
} else {
 return 
genera_aleatorio(); 
}


santhy está desconectado   Responder Citando
Antiguo 14-mar-2007, 16:42   #3 (permalink)
digdig ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2007
Mensajes: 13
Re: Como generar localizador de reserva aleatorio tipo ZX32B1

Gracias por la respuesta,en mi caso estoi trabajando con JSP y Servlet pero me sirve igual. Cuando lo adapte y lo pruebe lo publico por si le sirve de utilidad a alguien.
Gracias


PD: he conseguido generar el localizador aleatorio con procedure y trigger. Lo podeis ver en este foro en el hilo:
Generar Localizador Reserva aleatorio con PROCEDURE Y TRIGGER
En w w w . forosdelweb.com/showthread.php?t=474036

Un saludo Jorge F.M. (UAX Calico)

Última edición por digdig; 18-mar-2007 a las 22:17.
digdig está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 15:22.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93