43.7. PL/Tcl 中的事件触发器过程

事件触发器过程也可以用 PL/Tcl 编写。PostgreSQL要求能作为事件触发器被调用的过程必须被声明为一个没有参数并且返回类型为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();