O tipo de dados uuid armazena
Identificadores Universalmente Únicos
(Universally Unique Identifiers -
UUID) conforme definido pelo
RFC 9562,
ISO/IEC 9834-8:2005 e padrões relacionados.
(Alguns sistemas referem-se a esse tipo de dados como
identificador globalmente único, ou GUID,
em vez disso.)
Esse identificador é uma quantidade de 128 bits gerada por um
algoritmo escolhido para tornar muito improvável que o mesmo
identificador seja gerado por qualquer outra pessoa no universo
conhecido usando o mesmo algoritmo.
Portanto, para sistemas distribuídos, esses identificadores fornecem
uma garantia de unicidade melhor do que os geradores de sequência,
que são únicos apenas em um único banco de dados.
O RFC 9562 define 8 versões diferentes de UUID.
Cada versão possui requisitos específicos para a geração de novos
valores UUID, e cada versão oferece vantagens e desvantagens distintas.
O PostgreSQL oferece suporte nativo para
geração de UUIDs usando os algoritmos UUIDv4 e UUIDv7.
Como alternativa, os valores de UUID podem ser gerados fora do
banco de dados usando qualquer algoritmo.
O tipo de dados uuid pode ser usado para armazenar
qualquer UUID, independentemente da origem e da versão do UUID.
Um UUID é escrito como uma sequência de dígitos hexadecimais em letras minúsculas, em vários grupos separados por hifens, especificamente um grupo de 8 dígitos, seguido por 3 grupos de 4 dígitos, seguidos por um grupo de 12 dígitos, perfazendo um total de 32 dígitos hexadecimais representando os 128 bits. Um exemplo de UUID nessa forma padrão é:
a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
O PostgreSQL também aceita as seguintes formas alternativas de entrada: uso de dígitos em letras maiúsculas, o formato padrão entre chaves, omissão de alguns ou todos os hifens, adição de um hífen após qualquer grupo de quatro dígitos. Os exemplos são:
A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
a0eebc999c0b4ef8bb6d6bb9bd380a11
a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}
A saída se dá sempre no formato padrão.
Veja a Seção 9.14 para saber como gerar um UUID no PostgreSQL.