GEN_RANDOM_UUID は、ランダムな 16 進数の整数で構成されるバージョン 4 の UUID を生成します。これは、プライマリキー列の DEFAULT 値のように、書き込み時に行に一意の ID を割り当てるために、ID シーケンスを手動で管理することなく使用できます。
前提条件
開始する前に、以下を準備してください。
Hologres データベース
そのデータベースで DDL 文を実行する権限
pgcrypto 拡張機能のインストール
GEN_RANDOM_UUID を使用するには、pgcrypto 拡張機能が必要です。この関数を呼び出す前に、データベースごとに 1 回インストールしてください。
-- 拡張機能をインストールします。
CREATE EXTENSION pgcrypto;
-- 不要になった場合は、拡張機能を削除します。
DROP EXTENSION pgcrypto;この拡張機能はデータベースにスコープされます。新しいデータベースを作成する場合は、そのデータベースでも CREATE EXTENSION pgcrypto を実行してください。構文
GEN_RANDOM_UUID() → uuiduuid 値を返します。例: 3a5401f1-0f0c-4380-8611-78e654efd86d
UUID は 128 ビットの固定長です。その値は 00000000-0000-0000-0000-000000000000 から ffffffff-ffff-ffff-ffff-ffffffffffff の範囲です。UUID データの型に関する詳細については、「データの型」をご参照ください。
例
UUID のオンデマンド生成
SELECT GEN_RANDOM_UUID();結果:
gen_random_uuid
------------------------------------
3a5401f1-0f0c-4380-8611-78e654efd86d挿入時の UUID 列の自動生成
gen_random_uuid() を INSERT ... SELECT 文内で呼び出すことで、ソーステーブルの各行に一意の ID を割り当てます。
-- ソーステーブルを作成し、サンプルデータを入力します。
CREATE TABLE t_source (a INT);
INSERT INTO t_source SELECT * FROM generate_series(1, 5);
-- UUID 列を持つ宛先テーブルを作成します。
CREATE TABLE t_result (a INT, b UUID);
-- 行を挿入し、それぞれに UUID を生成します。
INSERT INTO t_result SELECT *, gen_random_uuid() FROM t_source;
-- 結果を確認します。
SELECT * FROM t_result;結果:
a | b
---+--------------------------------------
1 | 27477537-abc4-4c17-9cf3-91c856a3b298
2 | 2522b1ce-fdf3-4b14-a3c3-78f4baac5186
3 | c69959a3-ad40-424f-9eb1-3271d0c6a8d4
4 | 5493e087-b1b8-47e2-8117-adea27aaa676
5 | f0e55a29-e72e-42e6-99aa-486db4f8b624
(5 rows)