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();

  

posted @   不是安逸  阅读(195)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示