Обсуждение: plPerl: How to iterate over $_TD->{new} in a trigger function?
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
Am Mittwoch, 28. Juni 2006 20:00 schrieb Dirk Heinrichs: > 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}. OK, got it myself. > create or replace function test_trig() returns trigger as $$ > elog (INFO, "Table is: $_TD->{relname}\n"); > my %newrow = %_TD->{new};my %newrow = %{$_TD->{new}}; > elog (INFO, "$x=$y\n") while (($x,$y) = each %newrow); > return; > $$ language plperl; Works as expected. Bye... Dirk