La réponse de Craig Ringer est correcte. Voici un peu plus d'informations sur Postgres 9.1 et versions ultérieures…
L'extension est-elle disponible?
Vous ne pouvez installer une extension que si elle a déjà été construite pour votre installation Postgres (votre cluster dans le jargon Postgres). Par exemple, j'ai trouvé l' extension uuid-ossp incluse dans le cadre du programme d'installation pour Mac OS X gracieusement fourni par EnterpriseDB.com. L'une des quelques dizaines d'extensions peut être disponible.
Pour voir si l' extension uuid-ossp est disponible dans votre cluster Postgres, exécutez ce SQL pour interroger le pg_available_extensions
catalogue système:
SELECT * FROM pg_available_extensions;
Installer l'extension
Pour installer cette extension UUID , utilisez la commande CREATE EXTENSION comme indiqué dans ce SQL:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Attention: j'ai trouvé que les caractères MARQUE DE CITATION autour du nom de l'extension étaient requis, malgré la documentation contraire.
Le comité des normes SQL ou l'équipe Postgres a choisi un nom étrange pour cette commande. À mon avis, ils auraient dû choisir quelque chose comme "INSTALLER UNE EXTENSION" ou "UTILISER UNE EXTENSION".
Vérifier l'installation
Vous pouvez vérifier que l'extension a été correctement installée dans la base de données souhaitée en exécutant ce SQL pour interroger le pg_extension
catalogue système:
SELECT * FROM pg_extension;
UUID comme valeur par défaut
Pour plus d'informations, voir la colonne Question: Valeur par défaut de l'UUID dans Postgres
The Old Way
Les informations ci-dessus utilisent la nouvelle fonctionnalité Extensions ajoutée à Postgres 9.1. Dans les versions précédentes, nous devions trouver et exécuter un script dans un fichier .sql . La fonctionnalité Extensions a été ajoutée pour faciliter l'installation, échangeant un peu plus de travail pour le créateur d'une extension contre moins de travail de la part de l'utilisateur / consommateur de l'extension. Voir mon article de blog pour plus de discussion.
Types d'UUID
Soit dit en passant, le code de la question appelle la fonction uuid_generate_v4()
. Cela génère un type connu sous le nom de version 4 où presque tous les 128 bits sont générés de manière aléatoire. Bien que cela soit bien pour une utilisation limitée sur un plus petit ensemble de lignes, si vous voulez éliminer pratiquement toute possibilité de collision, utilisez une autre "version" d'UUID.
Par exemple, la version originale 1 combine l' adresse MAC de l'ordinateur hôte avec la date-heure actuelle et un nombre arbitraire, le risque de collisions est pratiquement nul.
Pour plus de discussion, voir ma réponse à une question connexe.