我想更改架构中所有对象的所有者。为此,我使用以下函数:
CREATE OR REPLACE FUNCTION chown(in_schema VARCHAR, new_owner VARCHAR)
RETURNS void AS
$$
DECLARE
object_types VARCHAR[];
object_classes VARCHAR[];
object_type record;
r record;
BEGIN
object_types = '{type,table,sequence,index,table,view}';
object_classes = '{c,t,S,i,r,v}';
FOR object_type IN
SELECT unnest(object_types) type_name,
unnest(object_classes) code
loop
FOR r IN
EXECUTE '
select n.nspname, c.relname
from pg_class c, pg_namespace n
where n.oid = c.relnamespace
and nspname = ''' || in_schema || '''
and relkind = ''' || object_type.code || ''''
loop
raise notice 'Changing ownership of % %.% to …
Run Code Online (Sandbox Code Playgroud)