PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara mengubah kepemilikan beberapa tabel di dalam database dari postgres ke pengguna lain?

Sudahkah Anda mencoba dengan anonymous code block ? Blok kode di bawah ini memilih semua tabel dari skema public yang merupakan milik pengguna postgres dan atur kepemilikan menjadi pengguna 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; 
$$;

Ingatlah bahwa operasi ini akan mengubah kepemilikan semua tabel dalam skema Anda yang dimiliki oleh pengguna tertentu. Jelas Anda dapat memfilter lebih lanjut tabel ini dengan mengubah pg_tables permintaan dalam lingkaran. Lihat di:

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

Gunakan dengan hati-hati!

EDIT :Untuk memfilter beberapa tabel dari pilihan di atas tambahkan NOT IN , seperti:

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. Log Stacktrace dari Python Interpreter saat ini melalui pemicu PostgreSQL

  2. Erlang dan PostgreSQL

  3. Cara menjumlahkan dua kolom bersyarat di PostgreSQL 9.3

  4. Di mana output file pg_dump pergi di MacOS?

  5. Dorongan Heroku dari aplikasi Django tidak mendapatkan modul bernama psycopg2.extensions