8.12. Tipo de dados UUID #

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.