Обсуждение: Setting session global variables

Поиск
Список
Период
Сортировка

Setting session global variables

От
Jonathan Bartlett
Дата:
Is there a way to set a session global variable in PostgreSQL?  The only
thing I see are examples of setting config variables.  What I would like
to do is this:

Have a table "insertedby" or something that has

created_object oid,
created_by_user oid,
creation_date datetime

Then have a procedure, so that any table that wanted to record who
inserted which record could just use that procedure as an insert
trigger.  The trigger would simply read the "current_user" session
variable (which the client had presumably set upon connection) and use it
to populate the "created_by_user" field.

However, the only way I can see to implement this is to have session
global variables.  Is there a way to fake session global variables with a
table?  Any comments would be appreciated.

Jon

johnnyb6@sdf.lonestar.org
SDF Public Access UNIX System - http://sdf.lonestar.org



Re: Setting session global variables

От
Tom Lane
Дата:
Jonathan Bartlett <johnnyb6@SDF.lonestar.org> writes:
> However, the only way I can see to implement this is to have session
> global variables.  Is there a way to fake session global variables with a
> table?  Any comments would be appreciated.

You could do it with temp tables: the same temp table name would refer
to a different table in each session.

(You realize, of course, that CURRENT_USER already exists per SQL spec.
I assume you just meant that you'd like to have things *like*
CURRENT_USER, but defined by yourself...)
        regards, tom lane


Re: Setting session global variables

От
Jonathan Bartlett
Дата:
Yes, that's perfect!  Actually, I was thinking of a real user, but more
in the fashion of "pretend" users.  If you've ever used Oracle apps, it
would be like an apps user, not the user "apps".

Anyway, that's an excellent idea.  Thank you much!

Jon

johnnyb6@sdf.lonestar.org
SDF Public Access UNIX System - http://sdf.lonestar.org

On Wed, 16 May 2001, Tom Lane wrote:

> Jonathan Bartlett <johnnyb6@SDF.lonestar.org> writes:
> > However, the only way I can see to implement this is to have session
> > global variables.  Is there a way to fake session global variables with a
> > table?  Any comments would be appreciated.
> 
> You could do it with temp tables: the same temp table name would refer
> to a different table in each session.
> 
> (You realize, of course, that CURRENT_USER already exists per SQL spec.
> I assume you just meant that you'd like to have things *like*
> CURRENT_USER, but defined by yourself...)
> 
>             regards, tom lane
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
> 
> http://www.postgresql.org/users-lounge/docs/faq.html
>