Har du prøvet med en anonymous code block
? Denne kodeblok nedenfor vælger alle tabeller fra skemaet public
der tilhører brugeren postgres
og indstil ejerskabet til brugeren user
:
DO $$
DECLARE row RECORD;
BEGIN
FOR row IN SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres' LOOP
EXECUTE FORMAT('ALTER TABLE %I.%I OWNER TO user',row.schemaname,row.tablename);
END LOOP;
END;
$$;
Husk, at denne handling vil ændre ejerskabet af alle tabeller i dit skema, der tilhører den givne bruger. Du kan naturligvis filtrere disse tabeller yderligere ved at ændre pg_tables
forespørgsel i løkken. Tag et kig på:
SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';
Brug det med omtanke!
REDIGER :For at bortfiltrere nogle få tabeller fra udvalget ovenfor, skal du tilføje en NOT IN
, såsom:
SELECT * FROM pg_tables
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')