开发快照。 PostgreSQL 20devel 尚未正式发布,内容仍可能变化。
44.6. 事件触发器函数 #
PL/Python 可用于定义事件触发器(另见第 38 章)。PostgreSQL 要求,被作为事件触发器调用的函数必须声明为无参数且返回类型为 event_trigger 的函数。
当函数被用作事件触发器时,字典 TD 包含与触发器相关的值:
TD["event"]触发器被触发的事件,字符串形式,例如
ddl_command_start。TD["tag"]触发器被触发时对应的命令标签,字符串形式,例如
DROP TABLE。
例 44.1 给出了一个 PL/Python 事件触发器函数的示例。
例 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();