Pergunta

Eu tenho um projeto Oracle que seria um bom ajuste para usar GUIDs como chave. Eu encontrei o seguinte trecho

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

A partir http: //feuerthoughts.blogspot .com / 2006/02 / relógio fora-de-sequencial de oráculo-guids.html

Quando eu executá-lo contra o meu banco de dados (eu tentei em versões 10g e versão 11) recebo uma saída como

64FE4083D6BA7CB4E0400F0A0E0A18B0
64FE4083D6BB7CB4E0400F0A0E0A18B0
64FE4083D6BC7CB4E0400F0A0E0A18B0
64FE4083D6BD7CB4E0400F0A0E0A18B0
64FE4083D6BE7CB4E0400F0A0E0A18B0

i. o valor nunca muda! Existe algo que eu tenho que fazer para configurá-lo para trabalhar como esperado?

Edit: Eu não sou muito observador - os GUIDs estão mudando, mas parece que eu estou sofrendo com o problema GUID seqüencial que o link acima está falando

.
Foi útil?

Solução

Parece OK. A partir da descrição:

SYS_GUID gera e retorna um globalmente identificador exclusivo (valor CRU) composta de 16 bytes. Na maioria plataformas, o gerado identificador consiste de um identificador de host, uma processo ou de fios de identificador da processo ou segmento invocando o função, e uma não repetidos valor (Sequência de bytes) para que o processo ou segmento.

A partir do seu exemplo:

64FE4083D6BA7CB4E0400F0A0E0A18B0
64FE4083D6BB7CB4E0400F0A0E0A18B0
64FE4083D6BC7CB4E0400F0A0E0A18B0
64FE4083D6BD7CB4E0400F0A0E0A18B0
64FE4083D6BE7CB4E0400F0A0E0A18B0

Ninguém mencionou nada sobre a distribuição desses valores GUID. Eles devem ser não repetidos e eles são. A menos que você obter exatamente a mesma saída de cada vez.

Outras dicas

O valor muda ....

           *
64FE4083D6BA7CB4E0400F0A0E0A18B0
64FE4083D6BB7CB4E0400F0A0E0A18B0
64FE4083D6BC7CB4E0400F0A0E0A18B0
64FE4083D6BD7CB4E0400F0A0E0A18B0
64FE4083D6BE7CB4E0400F0A0E0A18B0
           *
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top