pg 批量更改拥有者

记录一下。

为什么会有这个问题的原因是因为执行用的是管理员用户,pg默认拥有者是执行sql的用户也就是管理员,这样会导致创建的用户会没有这个表的权限

 

查询出sql语句复制直接执行就行

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;

 

用函数去批量执行

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 @ 2022-09-16 16:08  不是安逸  阅读(182)  评论(0编辑  收藏  举报