Re: Programación del lado del servidor

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: Juan Pablo Espino <jp(dot)espino(at)gmail(dot)com>
Cc: Chema Cortés <ch3m4(at)ch3m4(dot)org>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Programación del lado del servidor
Date: 2005-01-24 19:20:39
Message-ID: 20050124192039.GA5720@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Mon, Jan 24, 2005 at 12:10:02PM -0500, Juan Pablo Espino wrote:

Hola,

> Lo que me dices implica que tenga que llamar a la función?, hay forma
> de almacenar un procedimiento que este corriendo siempre en el
> servidor, es decir que no tenga que llamarlo.
>
> Por ejemplo un procedimiento que haga un control de acceso mas
> granular a una tabla, es decir, un usuario x hace un select a una
> tabla, mi procedimiento verifica (en otra tabla por ejemplo) a que
> registros puede accesar ese usuario y solo mostrarle esos a los que
> tiene permiso. Se podria hacer algo asi?, tiene sentido?

La pregunta no tiene mucho sentido asi como esta planteada. Se puede
hacer control de acceso automaticamente, si.

Una forma de hacerlo es usar una vista (mira CREATE VIEW, luego haces
GRANT en la vista y REVOKE en la tabla base) que tenga una clausula
WHERE apropiada a los permisos del usuario, y tambien puedes restringir
a las columnas que quieres que el usuario vea.

Otra forma que puede manejar situaciones mas complejas es usar una
"set-returning function"; lo mas sencillo es mirar RETURN NEXT en
funciones plpgsql.

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"I personally became interested in Linux while I was dating an English major
who wouldn't know an operating system if it walked up and bit him."
(Val Henson)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2005-01-24 19:29:34 Re: Problemas Con Postgresql en Sql-Ledger
Previous Message Hernan de Jesus Arias 2005-01-24 19:11:03 Problemas Con Postgresql en Sql-Ledger