2009-03-13 13 views
12

Mam projekt Oracle, który byłby odpowiedni do używania identyfikatorów GUID jako klucza. Znalazłem następujący fragmentOracle SYS_GUID nie zmienia się

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

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

Gdy go przeciwko mojej bazy danych (próbowałem go na wersji 10g i wersji 11) pojawia się wyjście jak

64FE4083D6BA7CB4E0400F0A0E0A18B0 
64FE4083D6BB7CB4E0400F0A0E0A18B0 
64FE4083D6BC7CB4E0400F0A0E0A18B0 
64FE4083D6BD7CB4E0400F0A0E0A18B0 
64FE4083D6BE7CB4E0400F0A0E0A18B0 

Tj wartość nigdy się nie zmienia! Czy jest coś, co muszę zrobić, żeby to działało zgodnie z oczekiwaniami?

Edytuj: Nie jestem zbyt spostrzegawczy - GUID się zmieniają, ale wygląda na to, że cierpię na sekwencyjny problem z GUID, o którym mówi powyższy link.

Odpowiedz

16

Wygląda OK. Z opisu:

SYS_GUID generuje i zwraca unikatowy identyfikator globalny (wartość RAW) składa się z 16 bajtów. W większości platform wygenerowany identyfikator składa się z identyfikatora gospodarzu, procesu lub nitek identyfikator procesu lub nici wywołanie funkcji i nonrepeating wartość (sekwencja bajtów) dla tego procesu lub nici .

ze swojego przykład:

 
64FE4083D6BA7CB4E0400F0A0E0A18B0 
64FE4083D6BB7CB4E0400F0A0E0A18B0 
64FE4083D6BC7CB4E0400F0A0E0A18B0 
64FE4083D6BD7CB4E0400F0A0E0A18B0 
64FE4083D6BE7CB4E0400F0A0E0A18B0 

Nikt nie wspomniano nic o podziale tych wartości GUID. Powinny one nie powtarzać się i są. O ile za każdym razem nie otrzymasz dokładnie tego samego wyniku.

+1

Dobre oczy! Myślę, że to jest problem, o którym myślę, że napisałem, ale mówię. –

15

Wartość ulega zmianie ....

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

Dzięki - teraz czuję się głupio ... –

+1

:-) Wszyscy już tam byliśmy ... możesz wpatrywać się w coś przez godzinę i nie zauważyć czegoś, co kolega zauważy w ciągu 5 sekund. – cagcowboy

+1

Dobre wykorzystanie formatowania. –

Powiązane problemy