Le type de données uuid
stocke des identifiants universels
uniques (UUID, acronyme de Universally
Unique Identifiers) décrits dans les standards RFC 4122,
ISO/IEC 9834-8:2005,
et d'autres encore. (Certains systèmes font référence à ce type de données
en tant qu'identifiant unique global (ou GUID
).) Un identifiant de ce type
est une quantité sur 128 bits générée par un algorithme adéquat qui a peu
de chances d'être reproduit par quelqu'un d'autre utilisant le même
algorithme. Du coup, pour les systèmes distribués, ces identifiants
fournissent une meilleure garantie d'unicité que ce que pourrait fournir
une séquence, dont la valeur est unique seulement au sein d'une base
de données.
Un UUID est écrit comme une séquence de chiffres hexadécimaux en minuscule, répartis en différents groupes, séparés par un tiret. Plus précisément, il s'agit d'un groupe de huit chiffres suivis de trois groupes de quatre chiffres terminés par un groupe de douze chiffres, ce qui fait un total de 32 chiffres représentant les 128 bits. Voici un exemple d'UUID dans sa forme standard :
a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
PostgreSQL accepte aussi d'autres formes en entrée : utilisation des majuscules, de crochets englobant le nombre, suppression d'une partie ou de tous les tirets, ajout d'un tiret après n'importe quel groupe de quatre chiffres. Voici quelques exemples :
A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11 {a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11} a0eebc999c0b4ef8bb6d6bb9bd380a11 a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11 {a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}
L'affichage est toujours dans la forme standard.
Pour générer des UUID, le module uuid-ossp fournit des fonctions qui implémentent les algorithmes standards. Le module pgcrypto fournit également une fonction de génération d'UUID aléatoires. Sinon, les UUID peuvent être générés par des applications clientes ou par d'autres bibliothèques appelées par une fonction serveur.