sql >> Databasteknik >  >> RDS >> PostgreSQL

Ge en användare behörighet att ÄNDRA en funktion

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?




  1. Hastighet för IN-nyckelord i MySQL/PostgreSQL

  2. Databasdesign för ett multiplayer/single quiz-spel

  3. MySQL/skrivfilfel (felkod 28) vid skapande av databas

  4. Hur uppdaterar man en Postgres-tabellkolumn med hjälp av en pandas-dataram?