PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Дайте разрешение на потребител да ПРОМЕНИ функция

ръководството за ALTER FUNCTION това е ясно:

Моят удебелен акцент.
Също така се нуждаете от няколко основни привилегии, за да създавате функции. Съгласно документацията:

Простото решение би било да направите промени във функциите като суперпотребител . (Суперпотребител по подразбиране е postgres , но всеки потребител може бъде направен суперпотребител.)

Ако наистина трябва да промените собствеността върху всички функции, това ще свърши работа:

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

Ограничено до public схема.
За повече подробности и обяснение вижте този по-пълен отговор на dba.SE .
Също тясно свързано:
ИЗХВЪРЛЯНЕ НА ФУНКЦИЯ без да знаете броя/типа на параметрите?




  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 където всичко е в масив

  2. cron задача за премахване на стари данни от postgres на debian

  3. Как да изберете записи от последните 24 часа в PostgreSQL

  4. Разбиране на разликата между int литерал и int параметър във функцията PL/pgSQL

  5. Как да увеличите максималния брой връзки в PostgreSQL