首先可以查询当前模式下函数的所有者分别是哪个用户,使用下面SQL来查询:
当前显示模式“abc”有2个无参函数和1个带参函数,拥有者都是postgres超级用户。
然后根据上面讲的两个视图: routines 和 parameters关联查询出模式下的所有函数和参数(目的是为了拼接SQL语句),参考如下:
这里我们再使用聚合函数: string_agg 把字段 params所有行连接成字符串,并用逗号分隔符分隔。
最后使用一个Postgres执行代码片段完成批量修改,完整SQL如下:
可以看到模式“abc”的Owner已经全部改为dbadmin这个账号了。
上次批量修改函数可能存在部分特殊场景会报错, 会把“参数类型” + “返回类型” 拼接在一起
改进方法:我们通过pg_catalog目录来实现批量修改,参考代码如下:
补充:PostgreSQL更改Owner所有者
网上一个大神写的
我来做一个改版
效果:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持七叶笔记。如有错误或未考虑完全的地方,望不吝赐教。