příručka k ALTER FUNCTION
v tom je jasno:
Odvážný důraz můj.
K vytváření funkcí také potřebujete několik základních oprávnění. Podle dokumentace:
Jednoduchým řešením by bylo provést změny ve funkcích jako superuživatel . (Výchozí superuživatel je postgres
, ale může každý uživatel být superuživatelem.)
Pokud opravdu potřebujete změnit vlastnictví všech funkcí, tohle by stačilo:
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_%'
Omezeno na public
schéma.
Další podrobnosti a vysvětlení naleznete v tato úplnější odpověď na dba.SE
.
Také úzce související:
FUNKCE DOP, aniž byste znali počet/typ parametrů?