Le manuel sur ALTER FUNCTION
est clair là-dessus :
Bold accent mine.
Vous avez également besoin de quelques privilèges de base pour créer des fonctions. Par documentation :
La solution simple serait de modifier les fonctions en tant que superutilisateur . (Le superutilisateur par défaut est postgres
, mais n'importe quel utilisateur peut devenir superutilisateur.)
Si vous avez vraiment besoin de changer de propriétaire sur toutes les fonctions, cela ferait l'affaire :
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_%'
Limité au public
schéma.
Pour plus de détails et d'explications, reportez-vous à cette réponse plus complète sur dba.SE
.
Aussi étroitement lié :
DROP FUNCTION sans connaître le nombre/type de paramètres ?