PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Daj użytkownikowi uprawnienia do ZMIANY funkcji

podręcznik ALTER FUNCTION jest jasne:

Pogrubiony nacisk na moje.
Potrzebujesz również kilku podstawowych uprawnień do tworzenia funkcji. Według dokumentacji:

Prostym rozwiązaniem byłoby wprowadzenie zmian w funkcjach jako superużytkownik . (Domyślnym superużytkownikiem jest postgres , ale każdy użytkownik może zostać superużytkownikiem).

Jeśli naprawdę musisz zmienić właściciela wszystkich funkcji, to wystarczy:

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

Ograniczony do public schemat.
Aby uzyskać więcej informacji i wyjaśnień, zobacz to pełniejsza odpowiedź na dba.SE .
Również blisko spokrewniony:
FUNKCJA UPUSZCZANIA bez znajomości liczby/typu parametrów?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL pg_dump

  2. Jak szyfrować hasła za pomocą PostgreSQL?

  3. W jaki sposób PostgreSQL wymusza ograniczenie UNIQUE / jakiego rodzaju indeksu używa?

  4. Na co zwrócić uwagę, jeśli Twoja replikacja PostgreSQL jest opóźniona

  5. Dziedziczenie JPA @EntityGraph zawiera opcjonalne skojarzenia podklas