select open change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

Supported versions: Current (18) / 17 / 16 / 15 / 14
Development versions: 19 / devel
Unsupported versions: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3
Historical version. PostgreSQL 9.0 reached end of support in October 2015. See the current version for supported releases.

42.6. 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.

TD["new"]
TD["old"]

For a row-level trigger, one or both of these fields contain the respective trigger rows, 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.

TD["relid"]

contains the OID of the table on which the trigger occurred.

TD["args"]

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.

Report a documentation issue

Read the upstream documentation. For corrections, first check the current version.