When a function is used as a trigger, the dictionary
TD contains trigger-related values. The trigger
rows are in TD["new"] and/or TD["old"]
depending on the trigger event. TD["event"] contains
the event as a string (INSERT, UPDATE,
DELETE, or UNKNOWN).
TD["when"] contains one of BEFORE,
AFTER, and UNKNOWN.
TD["level"] contains one of ROW,
STATEMENT, and UNKNOWN.
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["name"] contains the trigger name, 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, you may
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.