681 Stimmen

Generierung einer UUID in Postgres für Insert-Anweisung?

Meine Frage ist recht einfach. Ich bin mir des Konzepts einer UUID bewusst und ich möchte eine generieren, um auf jedes "Element" aus einem "Store" in meiner DB zu verweisen. Klingt vernünftig, oder?

Das Problem ist, dass die folgende Zeile einen Fehler zurückgibt:

honeydb=# insert into items values(
uuid_generate_v4(), 54.321, 31, 'desc 1', 31.94);
ERROR:  function uuid_generate_v4() does not exist
LINE 2: uuid_generate_v4(), 54.321, 31, 'desc 1', 31.94);
        ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Ich habe die Seite bei gelesen: http://www.postgresql.org/docs/current/static/uuid-ossp.html

Ich verwende Postgres 8.4 auf Ubuntu 10.04 x64.

8voto

Satish Mali Punkte 41

Das Modul uuid-ossp bietet Funktionen zur Erzeugung von universell eindeutigen Bezeichnern (UUIDs)

uuid_generate_v1() Diese Funktion erzeugt eine UUID der Version 1.

  1. Erweiterung hinzufügen

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

  1. Erweiterung überprüfen

SELECT * FROM pg_extension;

  1. Abfrage ausführen

INSERT INTO tabelle_name(id, spalte1, spalte2 , spalte3, ...) VALUES (uuid_generate_v1(), wert1, wert2, wert3...);

Überprüfen der Tabellendaten

5voto

Paolo Fernandes Punkte 113
ALTER TABLE table_name ALTER COLUMN id SET DEFAULT uuid_in((md5((random())::text))::cstring);

Nachdem ich die Antwort von @ZuzEL gelesen habe, habe ich den obigen Code als Standardwert für die Spalte id verwendet und es funktioniert gut.

-3voto

skyho Punkte 624
SELECT uuid_generate_v5(uuid_ns_url (), 'test');

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X