PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 43. PL/Python - Python 过程语言 | 下一页

# 43.6. 触发器函数

当一个函数用作触发器的时候，字典`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"`表示你已经修改了该行。否则忽略返回值。

上一页 | 起始页 | 下一页
匿名代码块 | 上一级 | 数据库访问