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

Bagaimana cara MEMBERIKAN SEMUA HAK ISTIMEWA pada SEMUA VIEWS dalam satu pernyataan?

Satu-satunya cara untuk melakukan ini dalam satu pernyataan (semacam) adalah dengan membuat fungsi, jika tidak, Anda secara khusus mencantumkan semua tampilan atau Anda memberikan ke semua tabel, lalu mencabut non-tampilan.

Saya menulis ini dengan cepat, tetapi mengujinya. Anda mungkin perlu mengubah sesuai kebutuhan:

CREATE OR REPLACE FUNCTION fn_grant_all_views(schema_name TEXT, role_name TEXT)
RETURNS VOID AS $func$

DECLARE view_name TEXT;

BEGIN

  FOR view_name IN
    SELECT viewname FROM pg_views WHERE schemaname = schema_name
  LOOP
    EXECUTE 'GRANT ALL PRIVILEGES ON ' || schema_name || '.' || view_name || ' TO ' || role_name || ';';
  END LOOP;

END; $func$ LANGUAGE PLPGSQL

Penggunaan:

SELECT fn_grant_all_views('my_schema','my_role');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL pilih elemen di mana jumlah bidang kurang dari N

  2. menggunakan profil boot musim semi dengan atribut konteks liquibase changeset untuk mengelola ruang lingkup changset

  3. Erlang dan PostgreSQL

  4. Bagaimana kata kunci IMMUTABLE, STABLE, dan VOLATILE memengaruhi perilaku fungsi?

  5. Gabungkan dua kolom dan tambahkan menjadi satu kolom baru