问题报告 纠错本页面

43.6. 触发器函数

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

TD["event"]

包含作为字符串的事件:INSERTUPDATEDELETETRUNCATE

TD["when"]

包含BEFOREAFTER或者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"]INSERTUPDATE,你可以返回"MODIFY"表示你已经修改了该行。否则忽略返回值。