hướng dẫn sử dụng ALTER FUNCTION
rõ ràng về điều đó:
Nhấn mạnh của tôi.
Bạn cũng cần một vài đặc quyền cơ bản để tạo các hàm. Theo tài liệu:
Giải pháp đơn giản sẽ là thực hiện các thay đổi đối với các chức năng như superuser . (Siêu người dùng mặc định là postgres
, nhưng bất kỳ người dùng nào có thể trở thành siêu người dùng.)
Nếu bạn thực sự cần phải thay đổi quyền sở hữu trên tất cả các chức năng, điều này sẽ thực hiện thủ thuật:
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_%'
Bị hạn chế đối với public
giản đồ.
Để biết thêm chi tiết và giải thích, hãy tham khảo câu trả lời đầy đủ hơn này trên dba.SE
.
Cũng có liên quan chặt chẽ:
DROP FUNCTION mà không biết số lượng / loại tham số?