42.7. СобÑÑийнÑе ÑÑиггеÑÑ Ð½Ð° PL/Perl
PL/Perl можно иÑполÑзоваÑÑ Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ ÑÑнкÑий ÑобÑÑийнÑÑ
ÑÑиггеÑов. Ð ÑÑнкÑии ÑобÑÑийного ÑÑиггеÑа Ñ
еÑ-маÑÑив $_TD ÑодеÑÐ¶Ð¸Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ пÑоизоÑедÑем ÑобÑÑии ÑÑиггеÑа. $_TD â глобалÑÐ½Ð°Ñ Ð¿ÐµÑеменнаÑ, коÑоÑÐ°Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ð½Ñжное локалÑное знаÑение пÑи каждом вÑзове ÑÑиггеÑа. ХеÑ-маÑÑив $_TD ÑодеÑÐ¶Ð¸Ñ ÑледÑÑÑие полÑ:
$_TD->{event}ÐÐ¼Ñ ÑобÑÑиÑ, пÑи коÑоÑом ÑÑабаÑÑÐ²Ð°ÐµÑ ÑÑÐ¾Ñ ÑÑиггеÑ.
$_TD->{tag}Тег командÑ, Ð´Ð»Ñ ÐºÐ¾ÑоÑой ÑÑабаÑÑÐ²Ð°ÐµÑ ÑÑÐ¾Ñ ÑÑиггеÑ.
ÐозвÑаÑаемое знаÑение ÑÑиггеÑной пÑоÑедÑÑÑ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ.
СледÑÑÑий пÑÐ¸Ð¼ÐµÑ ÑÑнкÑии ÑобÑÑийного ÑÑиггеÑа иллÑÑÑÑиÑÑÐµÑ Ð¾Ð¿Ð¸Ñанное вÑÑе:
CREATE OR REPLACE FUNCTION perlsnitch() RETURNS event_trigger AS $$
elog(NOTICE, "perlsnitch: " . $_TD->{event} . " " . $_TD->{tag} . " ");
$$ LANGUAGE plperl;
CREATE EVENT TRIGGER perl_a_snitch
ON ddl_command_start
EXECUTE PROCEDURE perlsnitch();