Genere un UUID para la declaración de inserción en PostgreSQL

Shihab Sikder 20 junio 2023
  1. Usar UUID en CREAR TABLA
  2. Inserte el UUID dentro de la instrucción INSERT
Genere un UUID para la declaración de inserción en PostgreSQL

UUID significa Universally Unique Identifier, que está definido por el RFC-4122. Podemos usar esto mientras creamos la tabla.

Usar UUID en CREAR TABLA

UUID ofrece un código hexadecimal de 32 dígitos, básicamente de 128 bits. Genera una cadena única cada vez.

Podemos generar UUID desde Postgres. Pero mostrará un error la primera vez como el siguiente:

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.

Entonces, necesitamos instalar el módulo uuid-ossp. Así es como lo harás:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

Ahora, puede crear todas las versiones del UUID. Aquí están los ejemplos:

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)

Creemos una tabla con el UUID como una de las columnas de la tabla.

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

En esta tabla, si insertamos una fila, se generará un UUID y se asignará como id por defecto.

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)

Aquí, puede ver que la identificación se genera como el uuid.

Inserte el UUID dentro de la instrucción INSERT

Modifiquemos la tabla anterior con más dos columnas que contendrán UUID_v1 y UUID_v4. Aquí está la tabla modificada:

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');

Aquí está la salida:

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)

Inicialmente, el generador de UUID no está presente en PostgreSQL. Para evitar el error, debemos realizar crear extensión en Postgres para que el generador de UUID esté disponible para la declaración de Postgres.

Para saber más sobre el UUID de Postgres, visite el siguiente 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