在用户下创建这些表和序列postgres
:
表创建模式
SET search_path TO main;
CREATE TABLE table1 ...
CREATE TABLE table2 ...
CREATE TABLE table3 ...
Run Code Online (Sandbox Code Playgroud)
序列创建模式
CREATE SEQUENCE main.seq1...
CREATE SEQUENCE main.seq2...
CREATE SEQUENCE main.seq3...
Run Code Online (Sandbox Code Playgroud)
现在想将它们全部更改为另一个名为 的所有者user1
。如何在不重新创建这些对象的情况下使用它们?
ALTER TABLE/SEQUENCE objectname OWNER TO somerole;
Run Code Online (Sandbox Code Playgroud)
您只能作为超级用户或作为新旧拥有角色的成员的角色来执行该操作。
如果您想同时对多个表执行此操作,请使用format
生成脚本:
SELECT format(
'ALTER TABLE %I OWNER TO somerole;',
oid::regclass
)
FROM pg_class WHERE relname LIKE 'table%';
Run Code Online (Sandbox Code Playgroud)
然后执行该脚本。如果您正在使用psql
,则可以使用\gexec
在一条语句中执行此操作:
SELECT format(
'ALTER TABLE %I OWNER TO somerole;',
oid::regclass
)
FROM pg_class WHERE relname LIKE 'table%' \gexec
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8928 次 |
最近记录: |