sql >> Databáze >  >> RDS >> PostgreSQL

Dejte uživateli oprávnění ALTER funkci

příručka k ALTER FUNCTION v tom je jasno:

Odvážný důraz můj.
K vytváření funkcí také potřebujete několik základních oprávnění. Podle dokumentace:

Jednoduchým řešením by bylo provést změny ve funkcích jako superuživatel . (Výchozí superuživatel je postgres , ale může každý uživatel být superuživatelem.)

Pokud opravdu potřebujete změnit vlastnictví všech funkcí, tohle by stačilo:

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

Omezeno na public schéma.
Další podrobnosti a vysvětlení naleznete v tato úplnější odpověď na dba.SE .
Také úzce související:
FUNKCE DOP, aniž byste znali počet/typ parametrů?




  1. Průběh produkční databáze – Neshoda kontrolního součtu migrace

  2. Jak použít mysqldump pro část tabulky?

  3. Jak mohu efektivně dotazovat na souvislé sady dat v mé sadě dat?

  4. PDO odešle nezpracovaný dotaz do MySQL, zatímco Mysqli odešle připravený dotaz, oba produkují stejný výsledek