PostgresでInsertステートメントのUUIDを生成するには?質問する

PostgresでInsertステートメントのUUIDを生成するには?質問する

私の質問は、かなり単純です。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.

私は次のページを読みました:静的ユーザ定義オブジェクト

Ubuntu 10.04 x64 で Postgres 8.4 を実行しています。

ベストアンサー1

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

最新の PostgreSQL バージョン (9.1 以降) の場合は簡単です。

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

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

Pg 9.1以降の場合は、代わりに以下をお読みください。現在の貢献ドキュメントそしてCREATE EXTENSIONこれらの機能は、8.4 などの 9.0 以前のバージョンには存在しません。

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

おすすめ記事