Когда функция используется как триггер, словарь 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
, вы можете вернуть значение None
или "OK"
из функции Python, чтобы показать, что строка не была изменена, значение "SKIP"
, чтобы прервать событие, либо, если в TD["event"]
передана команда INSERT
или UPDATE
, вы можете вернуть "MODIFY"
, чтобы показать, что новая строка была изменена. Во всех других случаях возвращаемое значение игнорируется.