事件触发器函数也可以用 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 FUNCTION tclsnitch();