sql >> Database teknologi >  >> RDS >> PostgreSQL

Giv en bruger tilladelse til at ÆNDRE en funktion

manualen om ALTER FUNCTION er klar på det:

Fed fremhævelse mine.
Du har også brug for et par grundlæggende privilegier for at oprette funktioner. Pr. dokumentation:

Den enkle løsning ville være at foretage ændringer i funktioner som superbruger . (Standard superbruger er postgres , men enhver bruger kan gøres til superbruger.)

Hvis du virkelig har brug for at ændre ejerskab på alle funktioner, dette ville gøre tricket:

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ænset til public skema.
For flere detaljer og forklaring henvises til dette mere fuldstændige svar på dba.SE .
Også nært beslægtet:
DROP-FUNKTION uden at kende antallet/typen af ​​parametre?




  1. Postgres Alter Column Heltal til Boolean

  2. SSIS - værdien kan ikke konverteres på grund af et potentielt tab af data

  3. Sådan sletter du dublerede poster fra en tabel i Oracle

  4. Mysqli vælg fra to tabeller