PostgreSQL의 Insert 문에 대한 UUID 생성
Shihab Sikder
2023년6월20일
UUID는 Universally Unique Identifier의 약자로 RFC-4122에 정의되어 있습니다. 테이블을 생성하는 동안 이것을 사용할 수 있습니다.
CREATE TABLE
에서 UUID 사용
UUID는 기본적으로 128비트인 32자리 16진수 코드를 제공합니다. 매번 고유한 문자열을 생성합니다.
Postgres에서 UUID를 생성할 수 있습니다. 그러나 처음에는 다음과 같은 오류가 표시됩니다.
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.
따라서 uuid-ossp
모듈을 설치해야 합니다. 방법은 다음과 같습니다.
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
이제 모든 버전의 UUID를 생성할 수 있습니다. 예는 다음과 같습니다.
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)
UUID를 테이블의 열 중 하나로 사용하여 테이블을 생성해 보겠습니다.
CREATE TABLE contacts (
id uuid DEFAULT uuid_generate_v4() PRIMARY KEY,
full_name VARCHAR NOT NULL,
email VARCHAR NOT NULL,
phone VARCHAR
);
이 테이블에서 행을 삽입하면 기본적으로 UUID가 생성되어 id
로 지정됩니다.
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)
여기에서 id가 uuid
로 생성된 것을 볼 수 있습니다.
INSERT
문 내에 UUID 삽입
UUID_v1 및 UUID_v4를 보유할 더 많은 2열로 위의 테이블을 수정해 보겠습니다. 수정된 테이블은 다음과 같습니다.
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');
출력은 다음과 같습니다.
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)
처음에는 UUID 생성기가 PostgreSQL에 없습니다. 오류를 방지하려면 Postgres 문에서 UUID 생성기를 사용할 수 있도록 Postgres에서 확장 생성
을 수행해야 합니다.
Postgres UUID에 대해 자세히 알아보려면 다음 블로그를 방문하십시오.
작가: Shihab Sikder