Il manuale su ALTER FUNCTION
è chiaro su questo:
Enfasi in grassetto mio.
Per creare funzioni sono necessari anche un paio di privilegi di base. Per documentazione:
La soluzione semplice sarebbe apportare modifiche alle funzioni come superutente . (Il superutente predefinito è postgres
, ma qualsiasi utente può diventare superutente.)
Se devi davvero cambiare la proprietà su tutte le funzioni, questo farebbe il trucco:
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_%'
Limitato al public
schema.
Per maggiori dettagli e spiegazioni fare riferimento a questa risposta più completa su dba.SE
.
Anche strettamente correlato:
FUNZIONE DROP senza conoscere il numero/il tipo di parametri?