私は、いくつかの別々のカタログ(データベース)で使用する必要のある大きなユーザー定義プロシージャーを持っています。Postgresのユーザ定義関数をすべてのデータベースで使用できるようにするにはどうすればよいですか?
通常はpg_catalog.pg_procにある組み込みプロシージャは、すべてのデータベースのpg_catalogスキーマに反映されている であるように見えます。私は、postgresデータベースに関数を作成すると、postgres.pg_catalogまたはpostgres.publicスキーマで作成されたものであれ、汎用的にアクセスできるようにすることができます。
ユーザー定義プロシージャを普遍的に使用できるようにする方法を知っている人はいますか?
私は名前空間と所有者を偽装し、公開に実行を許可し、黒い猫を私の左肩に(満月ではなく)保持してみました。
拡張機能として設定しますか? (それは私の環境のためのいくつかの交渉とfinaglingが、私はまだそれを試していない唯一の理由であるかかる場合があります。)事前に
おかげ
あなたはテンプレートdbに関数を置くことができ、新しいデータベースであればそれを持つことができます。さもなければ、拡張子があなたの最善の賭けです –
それをテンプレートに入れれば、その半分が得られますが、同じことの多くのコピーを更新するというメンテナンスの頭痛が残ります。 拡張機能を試してみます。おかげで、Neil。 – user8446599
最初のpostgres拡張機能が正常にインストールされましたが、それでも同じ問題があります。 私はpostgresスキーマでそれを作成し、それを正常に呼び出すことができますが、サンドボックススキーマから呼び出すと、 'ERROR:function ... does not exist。'というメッセージが表示されます。苦情。 私は助けることができませんが、私は行う必要がある他のものが不足していると思います。 postgres.pg_catalog.pg_available_extensionsでは、plpgsqlは 'installed_version'の値として1.0でリストされています。これにより、plpgsql自体 がこのようにロードされると思います。 (そして明らかにそれはどこでも利用可能です) 何か提案がありますか? – user8446599