Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/04/2009, 11:38
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Dar valor automatico (no repetido) Imposible?

Existe una función que puede darte esa solución, pero tiene dos problemas: 1) Devuelve un string de 36 caracteres siempre. 2) El string es alfanumerico.
este es el caso de
Código sql:
Ver original
  1. SELECT UUID();
Esto devuelve un identificador único universal, que no se puede repetir (basado en una clave de 128 bits), el manual de referncia dice:
Cita:
UUID()

Retorna un Universal Unique Identifier (UUID) (Identificador Único Universal) generado según la “DCE 1.1: Remote Procedure Call” (Apéndice A) CAE (Common Applications Environment) Especificaciones publicadas por The Open Group en Octubre 1997 (Número de Documento C706).

Se designa un UUID como número que es único globalmente en espacio y tiempo. Dos llamadas a UUID() generan dos valores distintos, incluso si estas llamadas se realizan en dos máquinas separadas y no están conectadas entre ellas.

Un UUID es un número de 128 bits representado por una cadena de cinco números hexadecimales en formato aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:

* Los primeros tres números se generan de un valor temporal.
** El cuarto número preserva unicidad temporal en caso de que el valor temporal pierda moniticidad (por ejemplo, debido al cambio horario).
*** El quinto número es un número IEEE 802 de nodo que proporciona unicidad espacial. Un número aleatorio se sustituye si el último no está disponible (por ejemplo, debido a que la máquina no tenga tarjeta Ethernet, o no sabemos encontrar la dirección hardware de una interfaz en el sistema operativo). En este caso, la unicidad espacial no se puede garantizar. Sin embargo, una colisión debe tener una probabilidad muy baja.
Es posible que operando con esto, o bien con la función RAND() puedas dar con una solución.
En este último caso deberías usar
Código SQL:
Ver original
  1. SELECT LPAD((RAND()*1000000 DIV 1),8,'0');
Para obtener un string de 8 dígitos aleatorio.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 30/04/2009 a las 11:45