回答:
コールDEFAULT
の1呼び出すための列を定義するときOSSPのUUIDの機能を。Postgresサーバーは、行が挿入されるたびに関数を自動的に呼び出します。
CREATE TABLE tbl
(
pkey UUID NOT NULL DEFAULT uuid_generate_v1() ,
CONSTRAINT pkey_tbl PRIMARY KEY ( pkey )
)
すでにpgcrypto拡張を使用している場合は、bpieckによる回答を検討してください。
ながら、Postgresのアウトオブボックスをサポート格納 UUID(汎用一意識別子)その天然の値を128ビット、フォーム生成 UUID値は、プラグインを必要とします。Postgresでは、プラグインはとして知られていextension
ます。
拡張機能をインストールするには、を呼び出しますCREATE EXTENSION
。再インストールを回避するには、を追加しIF NOT EXISTS
ます。詳細については私のブログ投稿を参照するか、StackOverflowのこのページを参照してください。
必要な拡張機能は、UUIDを操作するためのCで構築されたオープンソースライブラリ、OSSP uuidです。Postgres用のこのライブラリのビルドは、多くの場合、Enterprise DBが提供するグラフィカルインストーラーや、Amazon RDS for PostgreSQLなどのクラウドプロバイダーが含むPostgresのインストールにバンドルされています。
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
参照してください。拡張子のdoc UUID値の様々な種類を生成するために提供され、複数のコマンドのリストを表示するには。コンピューターのMACアドレス、現在の日時、および小さなランダム値から構築されたUUIDの元のバージョンを取得するには、を呼び出しますuuid_generate_v1()
。
SELECT uuid_generate_v1();
672124b6-9894-11e5-be38-001d42e813fe
このテーマのその後のバリエーションは、別の種類のUUID用に開発されました。一部の人々は、例えばセキュリティやプライバシーの問題のために、サーバーの実際のMACアドレスを記録したくないかもしれません。Postgres拡張機能は、5種類のUUIDと「nil」UUIDを生成し00000000-0000-0000-0000-000000000000
ます。
そのメソッド呼び出しを自動的に実行して、新しく挿入された行のデフォルト値を生成できます。列を定義するときに、次を指定します。
DEFAULT uuid_generate_v1()
次のテーブル定義の例で使用されているコマンドを参照してください。
CREATE TABLE public.pet_
(
species_ text NOT NULL,
name_ text NOT NULL,
date_of_birth_ text NOT NULL,
uuid_ uuid NOT NULL DEFAULT uuid_generate_v1(), -- <====
CONSTRAINT pet_pkey_ PRIMARY KEY (uuid_)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.pet_
OWNER TO postgres;
UUID-OSSPプラグインが生成することができますUUIDのさまざまなバージョンを。
uuid_generate_v1()
uuid_generate_v1mc()
uuid_generate_v3( namespace uuid, name text )
uuid_generate_v4()
uuid_generate_v5( namespace uuid, name text )
uuid_nil()
00000000-0000-0000-0000-000000000000
。不明なUUID値のフラグとして使用されます。nil UUIDとして知られています。タイプを比較するには、質問、使用するUUIDバージョンを参照してください。
バージョン3と5に興味がある場合は、この質問、v5 UUIDの生成を参照してください。名前と名前空間とは何ですか?。
詳細については、同様の質問への回答と、JDBCからPostgresへのブログ投稿UUID値を参照してください。
getObject()
使用できる結果をキャストすることは本当に必要ではありませんUUID id = rs.getObject("uuid_", UUID.class);
バジルの非常に詳細な答えへのほんの小さな追加:
現在、ほとんどがpgcryptouuid_generate_v1()
を使用しているgen_random_uuid()
ため、バージョン4のUUID値に使用する代わりに使用できます。
まず、Postgresでpgcryptoを有効にします。
CREATE EXTENSION "pgcrypto";
列のDEFAULTを設定するだけです
DEFAULT gen_random_uuid()