podręcznik ALTER FUNCTION
jest jasne:
Pogrubiony nacisk na moje.
Potrzebujesz również kilku podstawowych uprawnień do tworzenia funkcji. Według dokumentacji:
Prostym rozwiązaniem byłoby wprowadzenie zmian w funkcjach jako superużytkownik . (Domyślnym superużytkownikiem jest postgres
, ale każdy użytkownik może zostać superużytkownikiem).
Jeśli naprawdę musisz zmienić właściciela wszystkich funkcji, to wystarczy:
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_%'
Ograniczony do public
schemat.
Aby uzyskać więcej informacji i wyjaśnień, zobacz to pełniejsza odpowiedź na dba.SE
.
Również blisko spokrewniony:
FUNKCJA UPUSZCZANIA bez znajomości liczby/typu parametrów?