| 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: | Whole Thread | Raw Message | 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
| 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 |