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?