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

Shihab Sikder 20 Juni 2023
  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.

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