manualen om ALTER FUNCTION
är tydlig med det:
Fet betoning min.
Du behöver också ett par grundläggande privilegier för att skapa funktioner. Per dokumentation:
Den enkla lösningen skulle vara att göra ändringar i funktioner som superanvändare . (Standard superanvändare är postgres
, men alla användare kan göras till superanvändare.)
Om du behöver verkligen byta ägande för alla funktioner, detta skulle göra susen:
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änsad till public
schema.
För mer information och förklaring se det här mer fullständiga svaret på dba.SE
.
Också närbesläktat:
SLÄPPFUNKTION utan att veta antalet/typ av parametrar?