Antworten:
Aufruf DEFAULT
beim Definieren einer Spalte zum Aufrufen einer der OSSP-UUID- Funktionen. Der Postgres-Server ruft die Funktion bei jedem Einfügen einer Zeile automatisch auf.
CREATE TABLE tbl
(
pkey UUID NOT NULL DEFAULT uuid_generate_v1() ,
CONSTRAINT pkey_tbl PRIMARY KEY ( pkey )
)
Während Postgres die sofortige Speicherung von UUID- Werten (Universally Unique Identifier) in ihrer nativen 128-Bit- Form unterstützt, ist für die Generierung von UUID-Werten ein Plug-In erforderlich. In Postgres wird ein Plug-In als extension
.
Um eine Erweiterung zu installieren, rufen Sie an CREATE EXTENSION
. Um eine Neuinstallation zu vermeiden, fügen Sie hinzu IF NOT EXISTS
. Weitere Informationen finden Sie in meinem Blogbeitrag oder auf dieser Seite in StackOverflow .
Die gewünschte Erweiterung ist eine Open-Source-Bibliothek, die in C für die Arbeit mit UUIDs ( OSSP uuid) erstellt wurde . Ein Build dieser Bibliothek für Postgres wird häufig mit einer Installation von Postgres gebündelt, z. B. den von Enterprise DB bereitgestellten grafischen Installationsprogrammen oder von Cloud-Anbietern wie Amazon RDS für PostgreSQL .
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
Im Dokument der Erweiterung finden Sie eine Liste mit mehreren Befehlen zum Generieren verschiedener Arten von UUID-Werten. Rufen Sie an, um die Originalversion der UUID zu erhalten, die aus der MAC-Adresse des Computers, der aktuellen Datums- und Uhrzeitangabe sowie einem kleinen Zufallswert erstellt wurde uuid_generate_v1()
.
SELECT uuid_generate_v1();
672124b6-9894-11e5-be38-001d42e813fe
Spätere Variationen dieses Themas wurden für alternative Arten von UUIDs entwickelt. Einige Benutzer möchten möglicherweise nicht die tatsächliche MAC-Adresse des Servers aufzeichnen, z. B. aus Sicherheits- oder Datenschutzgründen. Die Postgres-Erweiterung generiert fünf Arten von UUIDs sowie die "Null" -UUID 00000000-0000-0000-0000-000000000000
.
Dieser Methodenaufruf kann automatisch ausgeführt werden, um einen Standardwert für eine neu eingefügte Zeile zu generieren. Geben Sie beim Definieren der Spalte Folgendes an:
DEFAULT uuid_generate_v1()
Siehe den Befehl in der folgenden Beispieltabellendefinition.
CREATE TABLE public.pet_
(
species_ text NOT NULL,
name_ text NOT NULL,
date_of_birth_ text NOT NULL,
uuid_ uuid NOT NULL DEFAULT uuid_generate_v1(), -- <====
CONSTRAINT pet_pkey_ PRIMARY KEY (uuid_)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.pet_
OWNER TO postgres;
Das Plugin uuid-ossp kann verschiedene Versionen von UUID generieren .
uuid_generate_v1()
uuid_generate_v1mc()
uuid_generate_v3( namespace uuid, name text )
uuid_generate_v4()
uuid_generate_v5( namespace uuid, name text )
uuid_nil()
00000000-0000-0000-0000-000000000000
. Wird als Flag für einen unbekannten UUID-Wert verwendet. Bekannt als Null-UUID .Informationen zum Vergleichen von Typen finden Sie unter Frage, welche UUID-Version verwendet werden soll.
Wenn Sie sich für die Versionen 3 und 5 interessieren, lesen Sie diese Frage, Generieren der v5-UUID. Was ist Name und Namespace? .
Weitere Informationen finden Sie in der Antwort auf eine ähnliche Frage und in den UUID-Werten meines Blogposts von JDBC zu Postgres .
getObject()
du auch verwenden UUID id = rs.getObject("uuid_", UUID.class);
uuid_generate_v1
oder aufrufen uuid_generate_v1mc
.
Nur eine kleine Ergänzung zu Basils sehr detaillierter Antwort:
Da zur Zeit die meisten verwenden pgcrypto , statt uuid_generate_v1()
Sie verwenden können , gen_random_uuid()
für eine Version 4 UUID Wert.
Aktivieren Sie zunächst pgcrypto in Ihrem Postgres.
CREATE EXTENSION "pgcrypto";
Setzen Sie einfach DEFAULT einer Spalte auf
DEFAULT gen_random_uuid()