登录
46.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"
以指示你已修改新行。否则将忽略返回值。