manualen om ALTER FUNCTION
er klar på det:
Fed fremhævelse mine.
Du har også brug for et par grundlæggende privilegier for at oprette funktioner. Pr. dokumentation:
Den enkle løsning ville være at foretage ændringer i funktioner som superbruger . (Standard superbruger er postgres
, men enhver bruger kan gøres til superbruger.)
Hvis du virkelig har brug for at ændre ejerskab på alle funktioner, dette ville gøre tricket:
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_%'
Begrænset til public
skema.
For flere detaljer og forklaring henvises til dette mere fuldstændige svar på dba.SE
.
Også nært beslægtet:
DROP-FUNKTION uden at kende antallet/typen af parametre?