From: | Sergio Gabriel Rodriguez <sgrodriguez(at)gmail(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
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 02:08:31 |
Message-ID: | 15aa6b3e0909181908q7ab63224oa2faa65f72841add@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
On Fri, Sep 18, 2009 at 10:37 PM, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>wrote:
> 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 ;
Gracias Alvaro, si funcionó, pero pensé que apuntabas al tipo de dato de
current_user y cambié el parámetro usuario de varchar a name, no noté lo de
quote_indent lo voy a probar
Sergio Gabriel Rodríguez
http://www.3trex.com.ar
From | Date | Subject | |
---|---|---|---|
Next Message | Pedro Mateo | 2009-09-20 18:55:32 | sobre obtener definiciones de funciones |
Previous Message | Alvaro Herrera | 2009-09-19 01:37:25 | Re: GRANT SELECT para todas las tablas de una base |