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)
沒有留言:
張貼留言