sql >> Databáze >  >> RDS >> PostgreSQL

Jak změnit vlastnictví některých tabulek v databázi z postgres na jiného uživatele?

Zkusili jste to pomocí anonymous code block ? Tento blok kódu níže vybírá všechny tabulky ze schématu public který patří uživateli postgres a nastavte vlastnictví na uživatele 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; 
$$;

Pamatujte, že tato operace změní vlastnictví všech tabulek ve vašem schématu, které patří danému uživateli. Tyto tabulky můžete samozřejmě dále filtrovat změnou pg_tables dotaz ve smyčce. Podívejte se na:

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

Používejte jej opatrně!

UPRAVIT :Chcete-li z výše uvedeného výběru odfiltrovat několik tabulek, přidejte NOT IN , například:

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



  1. Indexování pro operace BINARY LIKE v MySQL

  2. Funkce Oracle Analytic - resetování klauzule pro vytváření oken

  3. Při spuštění UPDATE ... datetime =NOW(); budou mít všechny aktualizované řádky stejné datum/čas?

  4. Jak mohu dešifrovat hesla MySQL