PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment modifier la propriété de certaines tables dans une base de données de postgres à un autre utilisateur ?

Avez-vous essayé avec un anonymous code block ? Ce bloc de code ci-dessous sélectionne toutes les tables du schéma public qui appartient à l'utilisateur postgres et définissez la propriété sur l'utilisateur 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; 
$$;

Gardez à l'esprit que cette opération modifiera la propriété de toutes les tables dans votre schéma qui appartient à l'utilisateur donné. Évidemment, vous pouvez filtrer davantage ces tables en modifiant le pg_tables requête dans la boucle. Jetez un oeil à :

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

Utilisez-le avec précaution !

MODIFIER  :Pour filtrer quelques tables de la sélection ci-dessus, ajoutez un NOT IN , tels que :

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