阅读(4192) (11)

PostgreSQL PL/Tcl 中的事件触发器函数

2021-08-21 11:32:38 更新

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