微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql-9.2 – 如何在postgres中更改函数的所有者

我正在编写一个脚本来改变postgres的所有功能(更改每个函数的所有者).我能够使用postgres查询列出所有函数名称,但不能列出每个函数的参数.

如果我得到以下任何问题的解决方案,我的问题将得到解决

>有没有办法在每个函数中列出参数的数据类型.
>我们有任何改变功能方法,而不是传递参数类型,我可以发送一些外卡.
例如,我可以写
ALTER FUNCTION schemaname.func(text)拥有’newowner’的所有者
如:
ALTER FUNCTION schemaname.func(*)拥有者’newowner’.

解决方法

Is there any way to list down parameters’ data type in each of the function.

是的,使用pg_get_function_identity_arguments()函数

以下将创建一个sql脚本来更改someschema架构中的所有函数

select 'alter function '||nsp.nspname||'.'||p.proname||'('||pg_get_function_identity_arguments(p.oid)||') owner to newowner;'
from pg_proc p
  join pg_namespace nsp ON p.pronamespace = nsp.oid
where nsp.nspname = 'someschema';

您可以将其输出假脱机到文件中,然后运行该生成的脚本.

如果你有需要引用的函数名,你可能需要使用quote_ident来连接函数名.

您可以将所有内容包装到函数中,并使用动态sql,以便在需要定期的情况下使生活更轻松.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐