A função GEN_RANDOM_UUID gera um identificador universalmente único (UUID) versão 4, composto por inteiros hexadecimais aleatórios. Use-a para atribuir IDs exclusivos às linhas durante a gravação — por exemplo, como valor DEFAULT em uma coluna de chave primária — sem gerenciar sequências de ID manualmente.
Pré-requisitos
Antes de começar, verifique se você tem:
Um banco de dados Hologres
Permissão para executar instruções DDL nesse banco de dados
Instale a extensão pgcrypto
A função GEN_RANDOM_UUID exige a extensão pgcrypto. Instale-a uma vez por banco de dados antes de chamar a função.
-- Install the extension.
CREATE EXTENSION pgcrypto;
-- Remove the extension if no longer needed.
DROP EXTENSION pgcrypto;
A extensão tem escopo limitado ao banco de dados. Se criar um novo banco de dados, execute CREATE EXTENSION pgcrypto também nele.
Sintaxe
GEN_RANDOM_UUID() → uuid
Retorna um valor uuid. Exemplo: 3a5401f1-0f0c-4380-8611-78e654efd86d
O UUID tem tamanho fixo de 128 bits e seu valor varia de 00000000-0000-0000-0000-000000000000 a ffffffff-ffff-ffff-ffff-ffffffffffff. Para mais informações sobre o tipo de dado UUID, consulte Tipos de dados.
Exemplos
Gerar um UUID sob demanda
SELECT GEN_RANDOM_UUID();
Resultado:
gen_random_uuid
------------------------------------
3a5401f1-0f0c-4380-8611-78e654efd86d
Preencher automaticamente uma coluna UUID na inserção
Use gen_random_uuid() em uma instrução INSERT ... SELECT para atribuir um ID exclusivo a cada linha de uma tabela source.
-- Create a source table and populate it with sample data.
CREATE TABLE t_source (a INT);
INSERT INTO t_source SELECT * FROM generate_series(1, 5);
-- Create a destination table with a UUID column.
CREATE TABLE t_result (a INT, b UUID);
-- Insert rows and generate a UUID for each one.
INSERT INTO t_result SELECT *, gen_random_uuid() FROM t_source;
-- Verify the results.
SELECT * FROM t_result;
Resultado:
a | b
---+--------------------------------------
1 | 27477537-abc4-4c17-9cf3-91c856a3b298
2 | 2522b1ce-fdf3-4b14-a3c3-78f4baac5186
3 | c69959a3-ad40-424f-9eb1-3271d0c6a8d4
4 | 5493e087-b1b8-47e2-8117-adea27aaa676
5 | f0e55a29-e72e-42e6-99aa-486db4f8b624
(5 rows)