sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan ændrer man ejerskabet af nogle tabeller i en database fra postgres til en anden bruger?

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')



  1. Hvordan opdaterer man alle kolonner med INSERT ... ON CONFLICT ...?

  2. Hent antal opdaterede rækker

  3. PDO PHP indsæt i DB fra et associativt array

  4. Hvordan samles datatyper som heltal (heltal med heltal) &varchar (varchar med varchar) i mysql?