La fonction GEN_RANDOM_UUID génère un identifiant universel unique (UUID) de version 4 composé d'entiers hexadécimaux aléatoires. Utilisez-la pour attribuer des ID uniques aux lignes lors de l'écriture, par exemple en tant que valeur DEFAULT sur une colonne de clé primaire, sans gérer manuellement les séquences d'ID.
Prérequis
Avant de commencer, vérifiez que vous disposez des éléments suivants :
Une base de données Hologres
Les autorisations nécessaires pour exécuter des instructions DDL dans cette base de données
Installation de l'extension pgcrypto
La fonction GEN_RANDOM_UUID nécessite l'extension pgcrypto. Installez-la une fois par base de données avant d'appeler la fonction.
-- Install the extension.
CREATE EXTENSION pgcrypto;
-- Remove the extension if no longer needed.
DROP EXTENSION pgcrypto;
L'extension est limitée à la base de données. Si vous créez une nouvelle base de données, exécutez également CREATE EXTENSION pgcrypto dans celle-ci.
Syntaxe
GEN_RANDOM_UUID() → uuid
Renvoie une valeur uuid. Par exemple : 3a5401f1-0f0c-4380-8611-78e654efd86d
Un UUID a une longueur fixe de 128 bits. Sa valeur varie de 00000000-0000-0000-0000-000000000000 à ffffffff-ffff-ffff-ffff-ffffffffffff. Pour plus d'informations sur le type de données UUID, consultez la section Types de données.
Exemples
Générer un UUID à la demande
SELECT GEN_RANDOM_UUID();
Résultat :
gen_random_uuid
------------------------------------
3a5401f1-0f0c-4380-8611-78e654efd86d
Remplir automatiquement une colonne UUID lors de l'insertion
Appelez gen_random_uuid() dans une instruction INSERT ... SELECT pour attribuer un ID unique à chaque ligne provenant d'une table 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;
Résultat :
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)