PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Berikan izin pengguna untuk MENGUBAH fungsi

manual tentang ALTER FUNCTION jelas tentang itu:

Penekanan tebal milik saya.
Anda juga memerlukan beberapa hak dasar untuk membuat fungsi. Per dokumentasi:

Solusi sederhananya adalah membuat perubahan pada fungsi sebagai pengguna super . (Pengguna super default adalah postgres , tetapi setiap pengguna bisa dijadikan superuser.)

Jika Anda benar-benar perlu mengubah kepemilikan pada semua fungsi, ini akan berhasil:

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

Dibatasi untuk public skema.
Untuk detail dan penjelasan lebih lanjut, lihat jawaban yang lebih lengkap ini di dba.SE .
Juga terkait erat:
DROP FUNCTION tanpa mengetahui jumlah/jenis parameter?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lompat celah SQL pada kondisi tertentu &penggunaan lead() yang tepat

  2. mengakses elemen array komposit plpgsql

  3. ValueError u mendukung format karakter 'd' dengan psycopg2

  4. Kapan nama kolom atau tabel Postgres membutuhkan tanda kutip dan kapan tidak?

  5. Cara menemukan kemunculan pertama dan terakhir dari karakter tertentu di dalam string di PostgreSQL