pg 批量更改拥有者
记录一下。
为什么会有这个问题的原因是因为执行用的是管理员用户,pg默认拥有者是执行sql的用户也就是管理员,这样会导致创建的用户会没有这个表的权限
查询出sql语句复制直接执行就行
1 2 3 4 5 6 7 8 9 10 11 12 | SELECT 'alter table ' || nsp.nspname || '.' || cls.relname || ' owner to 用户名;' || chr ( 13 ) FROM pg_catalog.pg_class cls, pg_catalog.pg_namespace nsp WHERE nsp.nspname IN ( '模式名' ) AND cls.relnamespace = nsp.oid AND cls.relkind = 'r' ORDER BY nsp.nspname, cls.relname; |
用函数去批量执行
1 2 3 4 5 6 7 8 9 10 11 | create or replace function update_table_owner() returns void as $$ declare rowdata RECORD; begin for rowdata in ( select concat( '${模式名}.' , table_name) as table_name from information_schema.tables where table_schema = '${模式名}' ) loop execute 'alter table ' ||rowdata.table_name|| ' owner to ${模式名}' ; end loop; end ; $$ language plpgsql; select update_table_owner(); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~