46.6. 触发功能

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

  • TD["event"]

    • 包含事件作为字符串:INSERTUPDATEDELETETRUNCATE
  • TD["when"]

    • 包含BEFOREAFTERINSTEAD OF之一。
  • TD["level"]

    • 包含ROWSTATEMENT
  • 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"]BEFOREINSTEAD OFTD["level"]ROW,则可以从 Python 函数返回None"OK"来指示该行未修改,"SKIP"可以中止该事件,或者TD["event"]INSERTUPDATE则可以返回"MODIFY"来表明您已经修改了新行。否则,返回值将被忽略。