43.7. Процедуры событийных триггеров в PL/Tcl
На PL/Tcl можно написать процедуры событийных триггеров. Postgres Pro требует, чтобы процедура, которая будет вызываться как событийный триггер, была объявлена как функция без аргументов и возвращала тип event_trigger.
Информация от менеджера триггеров передаётся в тело процедуры в следующих переменных:
$TG_eventИмя события, при котором срабатывает этот триггер.
$TG_tagТег команды, для которой срабатывает этот триггер.
Возвращаемое значение триггерной процедуры игнорируется.
В этом примере мини-процедура событийного триггера просто выдаёт замечание (NOTICE) при каждом выполнении поддерживаемой команды:
CREATE OR REPLACE FUNCTION tclsnitch() RETURNS event_trigger AS $$ elog NOTICE "tclsnitch: $TG_event $TG_tag" $$ LANGUAGE pltcl; CREATE EVENT TRIGGER tcl_a_snitch ON ddl_command_start EXECUTE PROCEDURE tclsnitch();
43.7. Event Trigger Procedures in PL/Tcl
Event trigger procedures can be written in PL/Tcl. Postgres Pro requires that a procedure that is to be called as an event trigger must be declared as a function with no arguments and a return type of event_trigger.
The information from the trigger manager is passed to the procedure body in the following variables:
$TG_eventThe name of the event the trigger is fired for.
$TG_tagThe command tag for which the trigger is fired.
The return value of the trigger procedure is ignored.
Here's a little example event trigger procedure that simply raises a NOTICE message each time a supported command is executed:
CREATE OR REPLACE FUNCTION tclsnitch() RETURNS event_trigger AS $$ elog NOTICE "tclsnitch: $TG_event $TG_tag" $$ LANGUAGE pltcl; CREATE EVENT TRIGGER tcl_a_snitch ON ddl_command_start EXECUTE PROCEDURE tclsnitch();