开发版本: 19 / devel
此文档适用于不受支持的 PostgreSQL 版本。
您可能需要查看当前版本的相同页面,或上面列出的其他受支持版本。

44.6. 事件触发器函数 #

PL/Python 可用于定义事件触发器(另见Chapter 38)。 PostgreSQL 要求,被作为事件触发器调用的函数必须声明为无参数且返回类型为event_trigger的函数。

当函数被用作事件触发器时,字典TD包含与触发器相关的值:

TD["event"]

触发器被触发的事件,字符串形式,例如ddl_command_start

TD["tag"]

触发器被触发时对应的命令标签,字符串形式,例如DROP TABLE

Example 44.1给出了一个PL/Python 事件触发器函数的示例。

Example 44.1. 一个PL/Python事件触发器函数

这个示例触发器会在每次执行受支持的命令时简单地发出一条NOTICE消息。

CREATE OR REPLACE FUNCTION pysnitch() RETURNS event_trigger
LANGUAGE plpython3u
AS $$
  plpy.notice("TD[event] => " + TD["event"] + " ; TD[tag] => " + TD["tag"]);
$$;

CREATE EVENT TRIGGER pysnitch ON ddl_command_start EXECUTE FUNCTION pysnitch();