1. ホーム
  2. postgresql

[解決済み] PostgresでInsert文のUUIDを生成する?

2022-03-19 07:33:11

質問

私の質問は、かなり単純です。私はUUIDの概念を知っていて、DBの「ストア」から各「アイテム」を参照するためにUUIDを生成したいのです。合理的なように見えるでしょう?

問題は、次の行がエラーを返すことです。

honeydb=# insert into items values(
uuid_generate_v4(), 54.321, 31, 'desc 1', 31.94);
ERROR:  function uuid_generate_v4() does not exist
LINE 2: uuid_generate_v4(), 54.321, 31, 'desc 1', 31.94);
        ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

のページを読みました。 http://www.postgresql.org/docs/current/static/uuid-ossp.html

Ubuntu 10.04 x64でPostgres 8.4が動いています。

解決方法は?

uuid-ossp はcontribモジュールなので、デフォルトではサーバーに読み込まれません。使用するには、データベースにロードする必要があります。

最近のPostgreSQLのバージョン(9.1以降)であれば、それは簡単です。

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

が、9.0以下では、代わりにSQLスクリプトを実行して拡張機能をロードする必要があります。参照 8.4 の contrib モジュールのドキュメント .

Pg 9.1 以降の場合は、代わりに以下をお読みください。 現在のcontrib docs CREATE EXTENSION . これらの機能は9.0や8.4のような古いバージョンには存在しません。

PostgreSQLのパッケージ版を使用している場合、contribモジュールと拡張機能を含む別のパッケージをインストールする必要があるかもしれません。パッケージマネージャのデータベースで 'postgres' と 'contrib' を検索してください。