На языке PL/Tcl можно писать функции событийных триггеров.
Digital Q.DataBase требует, чтобы функция, которая будет вызываться в качестве событийного триггера, была объявлена без аргументов и имела тип возвращаемого значения 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 FUNCTION tclsnitch();