ALTER FUNCTION
のマニュアル
それについては明らかです:
大胆な強調鉱山。
関数を作成するには、いくつかの基本的な権限も必要です。 ドキュメントごと:
簡単な解決策は、スーパーユーザーとして関数に変更を加えることです。 。 (デフォルトのスーパーユーザーはpostgres
です 、ただし、すべてのユーザーが スーパーユーザーになります。)
場合 本当にすべての機能の所有権を変更する必要があります。これでうまくいきます:
SELECT string_agg('ALTER FUNCTION '
|| quote_ident(n.nspname) || '.'
|| quote_ident(p.proname) || '('
|| pg_catalog.pg_get_function_identity_arguments(p.oid)
|| ') OWNER TO foo;'
, E'\n') AS _sql
FROM pg_catalog.pg_proc p
JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE n.nspname = 'public';
-- AND p.relowner <> (SELECT oid FROM pg_roles WHERE rolname = 'foo')
-- AND p.proname ~~ 'f_%'
public
に制限されています スキーマ。
詳細と説明については、dba.SEに関するこのより完全な回答
。
また密接に関連している:
パラメータの数/タイプを知らなくても機能を削除しますか?