PostgresでUUIDを生成する

こんにちは。ビーグルソフトの真鍋です。

前回のUUID生成と同じくPostgresでUUIDを生成したくなったので調べてみました。実際にはRDS上のPostgresを利用しているので参考にしてみてください。

blog.beaglesoft.net

バージョン情報

=> SELECT version();
                                                 version
----------------------------------------------------------------------------------------------------------
 PostgreSQL 9.6.10 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9), 64-bit
(1 row)

生成方法

UUIDをPostgresで生成するにはpgcryptoが必要になります。

F.25.5. ランダムデータ関数

そのためあらかじめExtensionがインストールされていることを確認します。

=> SELECT * FROM pg_available_extensions WHERE name = 'pgcrypto';
   name   | default_version | installed_version |         comment
----------+-----------------+-------------------+-------------------------
 pgcrypto | 1.3             | 1.3               | cryptographic functions
(1 row)

今回はすでにインストールされていますが、インストールするには以下のSQLを実行します。

=> CREATE EXTENSION if not exists pgcrypto;
NOTICE:  extension "pgcrypto" already exists, skipping
CREATE EXTENSION

以下の通りgen_random_uuidを実行するとuuidのバージョン4を生成してくれます。

=>  select gen_random_uuid();
           gen_random_uuid
--------------------------------------
 e61de8d7-2822-4544-9c92-4ce89f667396
(1 row)

[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)

[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)