De handleiding over ALTER FUNCTION
is daar duidelijk over:
Vetgedrukte nadruk van mij.
Je hebt ook een aantal basisrechten nodig om functies te maken. Per documentatie:
De eenvoudige oplossing zou zijn om wijzigingen aan te brengen in functies als superuser . (Standaard supergebruiker is postgres
, maar elke gebruiker kan supergebruiker worden.)
Als je moet echt van eigenaar veranderen voor alle functies, dit zou voldoende zijn:
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_%'
Beperkt tot public
schema.
Raadpleeg voor meer details en uitleg dit completere antwoord op dba.SE
.
Ook nauw verwant:
DROP-FUNCTIE zonder het aantal/type parameters te kennen?