PostgreSQL 8.4.2 Documentation
Prev | Fast Backward | Chapter 41. PL/Python - Python Procedural Language | Fast Forward | Next

# 41.2. Trigger Functions

When a function is used as a trigger, the dictionary `TD` contains trigger-related values. `TD["event"]` contains the event as a string (`INSERT`, `UPDATE`, `DELETE`, `TRUNCATE`, or `UNKNOWN`). `TD["when"]` contains one of `BEFORE`, `AFTER`, or `UNKNOWN`. `TD["level"]` contains one of `ROW`, `STATEMENT`, or `UNKNOWN`. For a row-level trigger, the trigger rows are in `TD["new"]` and/or `TD["old"]` depending on the trigger event. `TD["name"]` contains the trigger name, `TD["table_name"]` contains the name of the table on which the trigger occurred, `TD["table_schema"]` contains the schema of the table on which the trigger occurred, and `TD["relid"]` contains the OID of the table on which the trigger occurred. If the `CREATE TRIGGER` command included arguments, they are available in `TD["args"][0]` to `TD["args"][`n`-1]`.

If `TD["when"]` is `BEFORE` and `TD["level"]` is `ROW`, you can return `None` or `"OK"` from the Python function to indicate the row is unmodified, `"SKIP"` to abort the event, or `"MODIFY"` to indicate you've modified the row. Otherwise the return value is ignored.

Prev | Home | Next
PL/Python Functions | Up | Database Access