43.7. Disparadores de eventos (Event Triggers) de PL/Perl #

PL/Perl se puede utilizar para escribir funciones de disparador de eventos. En una función de disparador de eventos, la referencia a hash $_TD contiene información sobre el evento de disparo actual. $_TD es una variable global, la cual obtiene un valor local separado para cada invocación del disparador. Los campos de la referencia a hash $_TD son:

$_TD->{event}

El nombre del evento para el cual se dispara el disparador.

$_TD->{tag}

La etiqueta del comando para el cual se dispara el disparador.

El valor de retorno de la función de disparador se ignora.

Aquí hay un ejemplo de una función de disparador de eventos, que ilustra algo de lo anterior:

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 FUNCTION perlsnitch();