plPerl: How to iterate over $_TD->{new} in a trigger function?

From: Dirk Heinrichs <dirk(dot)heinrichs(at)online(dot)de>
To: pgsql-interfaces(at)postgresql(dot)org
Subject: plPerl: How to iterate over $_TD->{new} in a trigger function?
Date: 2006-06-28 18:00:36
Message-ID: 200606282000.43782.dirk.heinrichs@online.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

Hi,

I want to write a generic trigger function, which can be attached to any
table, but it seems I'm to stupid :-) to get column/value pairs out of
$_TD->{new} and $_TD->{old}.

Here is my sample code:

create or replace function test_trig() returns trigger as $$
elog (INFO, "Table is: $_TD->{relname}\n");
my %newrow = %_TD->{new};
elog (INFO, "$x=$y\n") while (($x,$y) = each %newrow);
return;
$$ language plperl;

CREATE trigger trig1 after update or insert or delete on test for each row
execute procedure test_trig();

Table test can be anything. This is what I get when I insert something:

# insert into test (data) values ('foo');
INFO: Table is: test

INFO: =

INSERT 0 1

What I want to get at the second "INFO:" line is:

INFO: data=foo

Any hints?

Thanks...

Dirk

Responses

Browse pgsql-interfaces by date

  From Date Subject
Next Message Dirk Heinrichs 2006-06-28 18:15:38 Re: plPerl: How to iterate over $_TD->{new} in a trigger function?
Previous Message Robert Wimmer 2006-06-28 17:40:09 Re: jdbc windows