मैनुअल ALTER FUNCTION
पर
उस पर स्पष्ट है:
बोल्ड जोर मेरा।
फ़ंक्शन बनाने के लिए आपको कुछ बुनियादी विशेषाधिकारों की भी आवश्यकता होती है। प्रति दस्तावेज़:
इसका आसान समाधान यह होगा कि सुपरयूज़र के रूप में functions कार्यों में परिवर्तन किया जाए . (डिफ़ॉल्ट सुपरयूज़र 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 पर यह अधिक संपूर्ण उत्तर
.
भी निकट से संबंधित:
ड्रॉप फ़ंक्शन बिना पैरामीटर की संख्या/प्रकार को जाने?