38.2. 触发器函数

当一个函数用做触发器的时候,字典TD包含与触发器相关的数值。 触发器行在TD["new"] 和/或TD["old"] 里面, 具体情况取决于触发器事件。TD["event"] 中包含以字串形式出现的事件 (INSERT, UPDATE, DELETE, 或 UNKNOWN)。 TD["when"] 包含 BEFORE, AFTER, 或者 UNKNOWN 之一。 TD["level"] 包含 ROW, STATEMENT, 或者 UNKNOWN 之一。 TD["name"] 包含触发器名字,而 TD["relid"] 包含触发器发生的表的 OID。 如果 CREATE TRIGGER 包括函数参数, 那么这些参数可以通过 TD["args"][0]TD["args"][(n -1)] 获得。

如果触发器的 TD["when"]BEFORE,那么你可以从 python 函数返回 None 或者 OK 以表示该行没有修改,返回"SKIP"以退出事件, 或者 "MODIFY" 表示你已经修改了该行。