PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да променя собствеността на някои таблици в база данни от postgres на друг потребител?

Опитахте ли с anonymous code block ? Този кодов блок по-долу избира всички таблици от схемата public който принадлежи на потребителя postgres и задайте собствеността на потребителя 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; 
$$;

Имайте предвид, че тази операция ще промени собствеността върху всички таблици във вашата схема, която принадлежи на дадения потребител. Очевидно можете допълнително да филтрирате тези таблици, като промените pg_tables заявка в цикъла. Разгледайте:

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

Използвайте го внимателно!

РЕДАКТИРАНЕ :За да филтрирате няколко таблици от селекцията по-горе, добавете NOT IN , като например:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Намерете всички таблици на дялове, наследени от главната таблица

  2. PostgreSQL - Писане на динамичен sql в съхранена процедура, която връща набор от резултати

  3. Sqoop на Hadoop:NoSuchMethodError:com.google.common.base.Stopwatch.createStarted()

  4. valid UUID не е валиден UUID

  5. Най-добрите ресурси за обучение и обучение на PostgreSQL