由於近期需要處理 PostgreSQL 的 Table 自動產生 GUID, 但對 PostgreSQL 不熟的我只能花時間研究如何自動產生 GUID。
本文將紀錄 PostgreSQL Table 如何自動產生 GUID。
測試情境
嘗試建立一個 Table 紀錄人名, Email 與唯一性 ID。 我使用 Table 自動產生 GUID Data Type買的 ID, 如下:
正文
首先我們建立一個名為 Test 的 Table 進行測試。 擔心重複我們可使用以下 SQL Query 確認 Table 是否存在:
SELECT EXISTS (SELECT FROM pg_tables WHERE schemaname = 'public' AND tablename = 'Test');
若不存在可得:
確認不存在後, 我們使用以下語法進行建立:
CREATE TABLE IF NOT EXISTS public."Test" (
ID UUID PRIMARY KEY DEFAULT gen_random_uuid(),
Name varchar(50),
Email varchar(100)
);
語法說明:
- IF NOT EXISTS 為確認不存在時進行建立;
- UUID 為 PostgreSQL 內的 GUID 代名詞;
- DEFAULT 為預設建立;
- gen_random_uuid() 為預設建立時使用 random 產生 GUID;
建立完成後我們可使用一次檢查 Table 語法, 若存在可得:
完成後我們使用語法塞入資料:
INSERT INTO public."Test" (Name, Email) VALUES
('A', 'A@test.com'),
('B', 'B@test.com'),
('C', 'C@test.com'),
('D', 'D@test.com'),
('E', 'E@test.com');
然後使用 SELECT 查詢可看到資料前方已自動產生 GUID:
SELECT * FROM public."Test";
以上即為 PostgreSQL 自動產生 GUID 的方法。
完成測試後我們只要使用以下語法即可刪除測試的 Table:
DROP TABLE public."Test";
結語
自動產生 GUID 是為了方便我們協助原本沒有 ID 的資料在匯入資料至 DB 時, 資料可得到一組唯一性的 ID 以便我們可準確地處理某筆異動資料或資料相同時也可使用 ID 進行區分。
以上內容為我個人的見解, 並感謝您的閱讀, 謝謝