sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur ändrar man ägandet av vissa tabeller i en databas från postgres till en annan användare?

Har du testat med ett anonymous code block ? Detta kodblock nedan väljer alla tabeller från schemat public som tillhör användaren postgres och ställ in äganderätten till användaren 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; 
$$;

Tänk på att den här åtgärden kommer att ändra ägandet av alla tabeller i ditt schema som tillhör den givna användaren. Självklart kan du filtrera dessa tabeller ytterligare genom att ändra pg_tables fråga i slingan. Ta en titt på:

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

Använd den med försiktighet!

REDIGERA :För att filtrera bort några tabeller från urvalet ovan lägg till en NOT IN , till exempel:

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



  1. Självrefererande ManyToMany RelationstypORM

  2. MySQLNonTransientConnectionException:Kunde inte skapa anslutning till databasserver

  3. Varför använder Oracle DBMS_STATS.GATHER_TABLE_STATS?

  4. mySQL:redigera/spara my.cnf-fil