CREATE FUNCTION direct_trigger() RETURNS triggerAS $$ return;
$$ LANGUAGE plperl;
SELECT direct_trigger();
-- check that SQL run in trigger code can see transition tables
CREATETABLE transition_table_test (id int, name text); INSERTINTO transition_table_test VALUES (1, 'a');
CREATE FUNCTION transition_table_test_f() RETURNS trigger LANGUAGE plperl AS
$$
my $cursor = spi_query("SELECT * FROM old_table");
my $row = spi_fetchrow($cursor);
defined($row) || die "expected a row";
elog(INFO, "old: " . $row->{id} . " -> " . $row->{name});
my $row = spi_fetchrow($cursor);
!defined($row) || die "expected no more rows";
my $cursor = spi_query("SELECT * FROM new_table");
my $row = spi_fetchrow($cursor);
defined($row) || die "expected a row";
elog(INFO, "new: " . $row->{id} . " -> " . $row->{name});
my $row = spi_fetchrow($cursor);
!defined($row) || die "expected no more rows";
return undef;
$$;
CREATETRIGGER a_t AFTER UPDATEON transition_table_test
REFERENCING OLD TABLEAS old_table NEW TABLEAS new_table FOREACH STATEMENT EXECUTE PROCEDURE transition_table_test_f(); UPDATE transition_table_test SET name = 'b';
DROPTABLE transition_table_test; DROP FUNCTION transition_table_test_f();
-- test plperl command triggers createorreplace function perlsnitch() returns event_trigger language plperl as $$
elog(NOTICE, "perlsnitch: " . $_TD->{event} . " " . $_TD->{tag} . " ");
$$;
create event trigger perl_a_snitch on ddl_command_start
execute procedure perlsnitch(); create event trigger perl_b_snitch on ddl_command_end
execute procedure perlsnitch();
createorreplace function foobar() returns int language sqlas $$select1;$$; alter function foobar() cost 77; drop function foobar();
createtable foo(); droptable foo;
drop event trigger perl_a_snitch; drop event trigger perl_b_snitch;
-- dealing with generated columns
CREATE FUNCTION generated_test_func1() RETURNS trigger
LANGUAGE plperl AS $$
$_TD->{new}{j} = 5; # not allowed return'MODIFY';
$$;
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.18Bemerkung:
(vorverarbeitet am 2026-08-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.