当函数用作触发器时,字典 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"
以表明已修改新行。否则将忽略返回值。