2009-03-13 4 views
12

J'ai un projet Oracle qui conviendrait parfaitement pour utiliser les GUID comme clé. J'ai trouvé l'extrait suivantOracle SYS_GUID ne change pas

SET SERVEROUTPUT ON 
BEGIN 
FOR indx IN 1 .. 5 
LOOP 
DBMS_OUTPUT.put_line (SYS_GUID); 
END LOOP; 
END; 
/

De http://feuerthoughts.blogspot.com/2006/02/watch-out-for-sequential-oracle-guids.html

Quand je lance contre ma base de données (je l'ai essayé sur les versions 10g et la version 11) Je reçois une sortie comme

64FE4083D6BA7CB4E0400F0A0E0A18B0 
64FE4083D6BB7CB4E0400F0A0E0A18B0 
64FE4083D6BC7CB4E0400F0A0E0A18B0 
64FE4083D6BD7CB4E0400F0A0E0A18B0 
64FE4083D6BE7CB4E0400F0A0E0A18B0 

à savoir la valeur ne change jamais! Y a-t-il quelque chose que je dois faire pour que cela fonctionne comme prévu? Editer: Je ne suis pas très observateur - les GUID changent, mais il semble que je souffre du problème de GUID séquentiel dont parle le lien ci-dessus.

Répondre

16

Cela semble OK. D'après la description:

SYS_GUID génère et retourne un identificateur global unique (valeur RAW) constituée de 16 octets. Sur la plupart des plates-formes, l'identificateur généré se compose d'un identificateur d'hôte, un identificateur de processus ou de fils du processus ou fil appelant la fonction , et un non répétitif valeur (séquence d'octets) de ce processus ou de fils .

De votre exemple:

 
64FE4083D6BA7CB4E0400F0A0E0A18B0 
64FE4083D6BB7CB4E0400F0A0E0A18B0 
64FE4083D6BC7CB4E0400F0A0E0A18B0 
64FE4083D6BD7CB4E0400F0A0E0A18B0 
64FE4083D6BE7CB4E0400F0A0E0A18B0 

personne n'a mentionné quoi que ce soit au sujet de la distribution de ces valeurs GUID. Ils devraient être non répétitifs et ils le sont. Sauf si vous obtenez exactement la même sortie à chaque fois.

+1

yeux Good! Je pense que c'est le problème que la pensée que j'ai posté parle cependant. –

15

La valeur ne change ....

  * 
64FE4083D6BA7CB4E0400F0A0E0A18B0 
64FE4083D6BB7CB4E0400F0A0E0A18B0 
64FE4083D6BC7CB4E0400F0A0E0A18B0 
64FE4083D6BD7CB4E0400F0A0E0A18B0 
64FE4083D6BE7CB4E0400F0A0E0A18B0 
      * 
+1

Merci - je me sens stupide maintenant ... –

+1

:-) Nous avons tous été là .... vous pouvez regarder quelque chose pendant une heure et ne pas repérer quelque chose qu'un collègue repère ensuite en 5 secondes. – cagcowboy

+1

Joli usage du formatage. –

Questions connexes