sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo alterar la propiedad de algunas tablas dentro de una base de datos de postgres a otro usuario?

¿Has probado con un anonymous code block ? Este bloque de código a continuación selecciona todas las tablas del esquema public que pertenece al usuario postgres y establezca la propiedad en el usuario 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; 
$$;

Tenga en cuenta que esta operación modificará la propiedad de todas las tablas en su esquema que pertenece al usuario dado. Obviamente, puede filtrar aún más estas tablas cambiando pg_tables consulta en el bucle. Echa un vistazo a:

SELECT * FROM pg_tables WHERE schemaname = 'public' AND tableowner = 'postgres';

¡Úsalo con cuidado!

EDITAR :Para filtrar algunas tablas de la selección anterior, agregue un NOT IN , como:

SELECT * FROM pg_tables 
WHERE schemaname = 'public' AND tableowner = 'postgres'
AND tablename NOT IN ('table1','table2','table3')