Skip site navigation (1) Skip section navigation (2)

Re: GRANT SELECT para todas las tablas de una base

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Sergio Gabriel Rodriguez <sgrodriguez(at)gmail(dot)com>
Cc: juan <juanramirez(at)cajazacate(dot)com(dot)sv>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: GRANT SELECT para todas las tablas de una base
Date: 2009-09-19 01:37:25
Message-ID: 20090919013725.GJ13076@alvh.no-ip.org (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Sergio Gabriel Rodriguez escribió:
> >
> > Luego de haber echo el cambio que dices, volviste a hacer la prueba que
> > sugiere Alvaro sin ningún problema?
> >
> >
> > >>>> create schema "mi esquema" create table "mi tabla" ();
> > >>>> select dar_permisos("mi esquema", current_user, 'all');
> 
> Si, anduvo bien, mi pregunta apunta a si hay algún otro error que no estoy
> viendo

¿Funciona realmente?  Lo que quería hacerte notar es que debes usar
quote_ident:

CREATE OR REPLACE FUNCTION "public"."dar_permisos" (esquema varchar, usuario varchar, privilegio varchar) RETURNS boolean AS
$BODY$
DECLARE
    registro  record;
BEGIN
  FOR registro IN SELECT * FROM pg_tables WHERE schemaname= esquema LOOP
          EXECUTE 'GRANT ' || privilegio || ' ON ' || quote_ident(esquema) || '.' ||
quote_ident(registro.tablename) || ' TO ' || quote_ident(usuario);
  END LOOP;
  RETURN TRUE;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE ;


-- 
Alvaro Herrera                  http://www.amazon.com/gp/registry/5ZYLFMCVHXC
"In a specialized industrial society, it would be a disaster
to have kids running around loose." (Paul Graham)

In response to

Responses

pgsql-es-ayuda by date

Next:From: Sergio Gabriel RodriguezDate: 2009-09-19 02:08:31
Subject: Re: GRANT SELECT para todas las tablas de una base
Previous:From: Marcos Luis Ortiz ValmasedaDate: 2009-09-18 22:12:44
Subject: Re: Problemas de concurrencia?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group