PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

44.5. 触发器函数 #

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

TD["event"]

以字符串形式包含事件: INSERT、UPDATE、 DELETE 或 TRUNCATE。

TD["when"]

包含 BEFORE、AFTER 或 INSTEAD OF 之一。

TD["level"]

包含 ROW 或 STATEMENT。

TD["new"]
TD["old"]

对于行级触发器,根据触发器事件,这两个字段中的一个或两个包含 各自的触发行。

TD["name"]

包含触发器名称。

TD["table_name"]

包含触发器所在的表的名称。

TD["table_schema"]

包含触发器所在的表的模式。

TD["relid"]

包含触发器所在的表的 OID。

TD["args"]

如果 CREATE TRIGGER 命令包含了参数,它们可以在 TD["args"][0] 到 TD["args"][n-1] 中获取。

如果 TD["when"] 是 BEFORE 或 INSTEAD OF 且 TD["level"] 是 ROW,您可以 从 Python 函数返回 None 或 "OK" 表示该行未被修改, 返回 "SKIP" 中止该事件;如果 TD["event"] 是 INSERT 或 UPDATE,还可以 返回 "MODIFY" 表示您已修改了新行。 否则返回值会被忽略。