Re: GRANT SELECT para todas las tablas de una base

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

In response to

Browse pgsql-es-ayuda by date

  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