網頁

2021/12/14

PostgreSQL 欄位自動產生UUID column auto-generated UUID

PostgreSQL資料表欄位自動產生UUID的方式如下。


範例環境:

  • PostgreSQL 14

PostgreSQL可使用uuid-ossp模組提供的uuid_generate_v4()函示產生RFC 4122第4版的UUID。但要先以CREATE EXTENSION安裝uuid-ossp模組。

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

在psql執行如下。

postgres=# CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION

調用uuid_generate_v4()產生UUID。

postgres=# SELECT uuid_generate_v4();
           uuid_generate_v4
--------------------------------------
 0ab19b78-c829-4f6c-84d7-deca93902962
(1 row)

下面建立employee資料表時把id欄位型態設為uuid,且預設值為uuid_generate_v4()自動產生的UUID。

CREATE TABLE IF NOT EXISTS employee (
   id uuid DEFAULT uuid_generate_v4() PRIMARY KEY,
   name varchar(60) UNIQUE NOT NULL,
   age integer,
   created_at timestamp NOT NULL
);

employee新增兩筆資料。

INSERT INTO "employee" ("name", "age", "created_at") VALUES ('john', 33, now());
INSERT INTO "employee" ("name", "age", "created_at") VALUES ('mary', 28, now());

psql查詢employee剛新增的兩筆資料,可以看到id欄位為自動產生的UUID。

postgres=# SELECT * FROM employee;
                  id                  | name | age |         created_at
--------------------------------------+------+-----+----------------------------
 f3f6148e-1ac3-4ae4-b96e-16f937393a10 | john |  33 | 2021-12-14 23:07:39.015527
 080fa120-1d7c-4bf8-a58b-944e1b110205 | mary |  28 | 2021-12-14 23:07:39.017879
(2 rows)


沒有留言:

張貼留言