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();