sql >> Database >  >> RDS >> PostgreSQL

Geef een gebruiker toestemming om een ​​functie te WIJZIGEN

De handleiding over ALTER FUNCTION is daar duidelijk over:

Vetgedrukte nadruk van mij.
Je hebt ook een aantal basisrechten nodig om functies te maken. Per documentatie:

De eenvoudige oplossing zou zijn om wijzigingen aan te brengen in functies als superuser . (Standaard supergebruiker is postgres , maar elke gebruiker kan supergebruiker worden.)

Als je moet echt van eigenaar veranderen voor alle functies, dit zou voldoende zijn:

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_%'

Beperkt tot public schema.
Raadpleeg voor meer details en uitleg dit completere antwoord op dba.SE .
Ook nauw verwant:
DROP-FUNCTIE zonder het aantal/type parameters te kennen?




  1. Oracle self-join beginnend met minimumwaarde (jaarmaanden) voor elke partitie

  2. Gegevens draaien in T-SQL

  3. Hoe Kolomwaarde te selecteren als Kolomnaam met voorwaarden in SQL-tabel?

  4. Hoe controleer ik in PHP op records die ouder zijn dan vandaag?