sql >> Database >  >> RDS >> PostgreSQL

Hoe VERLENEN IK ALLE PRIVILEGES op ALLE VIEWS in één verklaring?

De enige manier om dit in een enkele instructie (soort van) te doen, is door een functie te maken, anders vermeldt u ofwel specifiek alle weergaven of verleent u toestemming aan alle tabellen en trekt u vervolgens niet-weergaven in.

Ik schreef dit snel, maar testte het. Het kan nodig zijn om aanpassingen te doen als dat nodig is:

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

Gebruik:

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


  1. Alternatief voor ORDER BY RAND() op samengevoegde tabellen?

  2. wat is een goede manier om horizontale scherf in postgresql te plaatsen?

  3. Ongedefinieerde klassenconstante 'MYSQL_ATTR_INIT_COMMAND' in ongedefinieerde klassenconstante (PHP 5.5.3)

  4. php-bestandsupload, hoe het bestandsuploadtype te beperken