Thread: Accessing field of OLD in trigger

Accessing field of OLD in trigger

From
Daniel Drotos
Date:
Hi,


I'm working on a row level plpgsql trigger running after delete, using 
a 8.0.3 server. It gets a parameter which is a field name of the OLD 
record. How can that field be accessed?

I'd like to do something like:

for recvar in 'select OLD.'||quote_ident(TG_ARGV[0])...

Daniel

Ps: sorry about my previouse try of posting this message, it went to 
wrong place.


Re: Accessing field of OLD in trigger

From
Josh Trutwin
Date:
On Fri, 12 Oct 2007 12:00:55 +0200 (CEST)
Daniel Drotos <drdani@mazsola.iit.uni-miskolc.hu> wrote:

> Hi,
> 
> 
> I'm working on a row level plpgsql trigger running after delete,
> using a 8.0.3 server. It gets a parameter which is a field name of
> the OLD record. How can that field be accessed?
> 
> I'd like to do something like:
> 
> for recvar in 'select OLD.'||quote_ident(TG_ARGV[0])...

I THINK you are out of luck here.  I hear it's possible to do but in
one of the other PL languages say pl/tcl, though I can't seem to find
an example....

Josh


Re: Accessing field of OLD in trigger

From
Erik Jones
Date:
On Oct 12, 2007, at 8:18 AM, Josh Trutwin wrote:

> On Fri, 12 Oct 2007 12:00:55 +0200 (CEST)
> Daniel Drotos <drdani@mazsola.iit.uni-miskolc.hu> wrote:
>
>> Hi,
>>
>>
>> I'm working on a row level plpgsql trigger running after delete,
>> using a 8.0.3 server. It gets a parameter which is a field name of
>> the OLD record. How can that field be accessed?
>>
>> I'd like to do something like:
>>
>> for recvar in 'select OLD.'||quote_ident(TG_ARGV[0])...
>
> I THINK you are out of luck here.  I hear it's possible to do but in
> one of the other PL languages say pl/tcl, though I can't seem to find
> an example....

Right, "dynamic variables" aren't available in plpgsql.  Check out
any of the other pl languages available if you can.

Erik Jones

Software Developer | Emma®
erik@myemma.com
800.595.4401 or 615.292.5888
615.292.0777 (fax)

Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com