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

Jak UDĚLUJI VŠECHNA PRIVILEGIA pro VŠECHNA ZOBRAZENÍ v jednom prohlášení?

Jediným způsobem, jak to udělat v jediném příkazu (druhu), je vytvořit funkci, jinak buď konkrétně vypisujete všechny pohledy, nebo udělujete všem tabulkám a poté odvoláváte nezobrazení.

Napsal jsem to rychle, ale vyzkoušel jsem to. Možná budete muset upravit podle potřeby:

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

Použití:

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


  1. Na jakou hodnotu by měla být nastavena vlastnost providerName při ukládání připojovacího řetězce MySQL do App.config?

  2. Jak zobrazit obsah kontroly omezení na Oracle

  3. Migrace NetSuite

  4. MySQL LEFT JOIN, GROUP BY a ORDER BY nefungují podle potřeby