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