Das Handbuch zu ALTER FUNCTION
ist klar:
Fette Hervorhebung von mir.
Außerdem benötigen Sie ein paar grundlegende Privilegien, um Funktionen zu erstellen. Pro Dokumentation:
Die einfache Lösung wäre, Änderungen an Funktionen als Superuser vorzunehmen . (Standard-Superuser ist postgres
, aber jeder Benutzer kann zum Superuser gemacht werden.)
Wenn Sie müssen wirklich den Besitz aller Funktionen ändern, dies würde den Zweck erfüllen:
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_%'
Beschränkt auf public
Schema.
Weitere Details und Erklärungen finden Sie unter diese vollständigere Antwort auf dba.SE
.
Ebenfalls eng verwandt:
DROP-FUNKTION, ohne die Anzahl/Art der Parameter zu kennen?