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.