Die Antwort von Craig Ringer ist richtig. Hier ein paar Infos zu Postgres 9.1 und höher…
Ist eine Erweiterung verfügbar?
Sie können eine Erweiterung nur installieren, wenn sie bereits für Ihre Postgres-Installation erstellt wurde (Ihr Cluster in Postgres-Jargon). Zum Beispiel fand ich die Erweiterung uuid-ossp, die im Installationsprogramm für Mac OS X enthalten ist und freundlicherweise von EnterpriseDB.com bereitgestellt wird. Jede von ein paar Dutzend Erweiterungen verfügbar sein.
Führen Sie diese SQL aus, um den Systemkatalog abzufragen, um festzustellen, ob die Erweiterung uuid-ossp in Ihrem Postgres-Cluster verfügbar ist pg_available_extensions
:
SELECT * FROM pg_available_extensions;
Installation installieren
Verwenden Sie zum Installieren dieser UUID- bezogenen Erweiterung den Befehl CREATE EXTENSION, wie in dieser SQL dargestellt:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Achtung: Ich habe festgestellt, dass die QUOTATION MARK-Zeichen um den Erweiterungsnamen trotz gegenteiliger Dokumentation erforderlich sind.
Das SQL-Standardkomitee oder das Postgres-Team haben einen ungeraden Namen für diesen Befehl gewählt. Meiner Meinung nach hätten sie etwas wie "INSTALL EXTENSION" oder "USE EXTENSION" wählen sollen.
Überprüfen Sie die Installation
Sie können überprüfen, ob die Erweiterung erfolgreich in der gewünschten Datenbank installiert wurde, indem Sie diese SQL ausführen, um den pg_extension
Systemkatalog abzufragen :
SELECT * FROM pg_extension;
UUID als Standardwert
Weitere Informationen finden Sie in der Spalte Frage: Standardwert für UUID in Postgres
Der alte Weg
Die oben genannten Informationen verwenden die neuen Erweiterungen Feature hinzugefügt , um Postgres 9.1. In früheren Versionen mussten wir ein Skript in einer SQL- Datei finden und ausführen . Die Erweiterungsfunktion wurde hinzugefügt, um die Installation zu vereinfachen und dem Ersteller einer Erweiterung etwas mehr Arbeit gegen weniger Arbeit seitens des Benutzers / Verbrauchers der Erweiterung einzutauschen. Weitere Diskussionen finden Sie in meinem Blogbeitrag .
Arten von UUIDs
Der Code in der Frage ruft übrigens die Funktion auf uuid_generate_v4()
. Dies erzeugt einen als Version 4 bekannten Typ, bei dem fast alle 128 Bits zufällig erzeugt werden. Während dies für die eingeschränkte Verwendung in kleineren Zeilengruppen in Ordnung ist, verwenden Sie eine andere "Version" von UUID, wenn Sie die Möglichkeit einer Kollision praktisch ausschließen möchten.
Beispielsweise kombiniert die ursprüngliche Version 1 die MAC-Adresse des Host-Computers mit dem aktuellen Datum und der Uhrzeit und einer beliebigen Zahl. Die Wahrscheinlichkeit von Kollisionen ist praktisch gleich Null.
Weitere Informationen finden Sie in meiner Antwort auf die zugehörige Frage.