Generieren Sie eine UUID für die Insert-Anweisung in PostgreSQL

  1. UUID in CREATE TABLE verwenden
  2. Fügen Sie die UUID innerhalb der INSERT-Anweisung ein
Generieren Sie eine UUID für die Insert-Anweisung in PostgreSQL

UUID steht für Universally Unique Identifier, der durch RFC-4122 definiert ist. Wir können dies beim Erstellen der Tabelle verwenden.

UUID in CREATE TABLE verwenden

UUID bietet einen 32-stelligen Hexadezimalcode, im Grunde 128-Bit. Es generiert jedes Mal eine eindeutige Zeichenfolge.

Wir können UUID von Postgres generieren. Aber es wird beim ersten Mal einen Fehler wie den folgenden zeigen:

postgres=# select uuid_generate_v4();
ERROR:  function uuid_generate_v4() does not exist
LINE 1: select uuid_generate_v4()
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Also müssen wir das Modul uuid-ossp installieren. So gehen Sie vor:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

Jetzt können Sie alle Versionen der UUID erstellen. Hier sind die Beispiele:

postgres=# SELECT uuid_generate_v1();
           uuid_generate_v1
--------------------------------------
 22e2579a-1c76-11ed-979f-eba332a1af20
(1 row)


postgres=# SELECT uuid_generate_v4();
           uuid_generate_v4
--------------------------------------
 db1c0f9f-dedb-459e-b267-d56ff06e6714
(1 row)

Lassen Sie uns eine Tabelle mit der UUID als eine der Tabellenspalten erstellen.

CREATE TABLE contacts (
    id uuid DEFAULT uuid_generate_v4() PRIMARY KEY,
    full_name VARCHAR NOT NULL,
    email VARCHAR NOT NULL,
    phone VARCHAR
);

Wenn wir in dieser Tabelle eine Zeile einfügen, wird standardmäßig eine UUID generiert und als id zugewiesen.

INSERT INTO contacts(full_name, email, phone)
  VALUES('Alex','alex@gmail.com','01912334355');
INSERT INTO contacts(full_name, email, phone)
  VALUES('John','john@gmail.com','123456789');
-- Let's see the output
postgres=# select * from contacts;
                  id                  | full_name |     email      |    phone
--------------------------------------+-----------+----------------+-------------
 5685a3d5-7de0-47ce-9fe4-19bbbc81b531 | Alex      | alex@gmail.com | 01912334355
 4e4555db-9ea9-4b0b-9a71-d52d176d063d | John      | john@gmail.com | 123456789
(2 rows)

Hier sehen Sie, dass die ID als uuid generiert wird.

Fügen Sie die UUID innerhalb der INSERT-Anweisung ein

Ändern wir die obige Tabelle mit zwei Spalten, die UUID_v1 und UUID_v4 enthalten. Hier die modifizierte Tabelle:

CREATE TABLE contacts
(
    id uuid DEFAULT uuid_generate_v4() PRIMARY KEY,
    full_name VARCHAR NOT NULL,
    id_v1 uuid,
    id_v4 uuid,
    email VARCHAR NOT NULL,
    phone VARCHAR
);

INSERT INTO contacts
    (full_name, id_v1, id_v4, email, phone)
VALUES('Alex', uuid_generate_v1(),
    uuid_generate_v4(),
    'alex@gmail.com', '01912334355');

INSERT INTO contacts
    (full_name, id_v1, id_v4, email, phone)
VALUES('John', uuid_generate_v1(),
    uuid_generate_v4(),
    'john@gmail.com', '123456789');

Hier ist die Ausgabe:

postgres=# select full_name, id_v1, id_v4 from contacts;
 full_name |                id_v1                 |                id_v4
-----------+--------------------------------------+--------------------------------------
 Alex      | 23438c20-1c78-11ed-ad33-0bc676d6e82c | b751fa4f-39da-4e3d-ba36-b79edd1ccf9e
 John      | 24545572-1c78-11ed-9d3c-b3409499f6de | dece10ab-56ab-4bad-b27b-5e9c15060c52
(2 rows)

Anfangs ist der UUID-Generator in PostgreSQL nicht vorhanden. Um den Fehler zu vermeiden, müssen wir in Postgres Erweiterung erstellen ausführen, damit der UUID-Generator für die Postgres-Anweisung verfügbar ist.

Um mehr über die Postgres-UUID zu erfahren, besuchen Sie den folgenden Blog.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website