Есть ли какая-либо определенная функция в Postgres, которая позволяет узнать, какое действие запускает триггер? - PullRequest
1 голос
/ 21 июня 2020

Я хочу сделать триггер в Postgres, чтобы он обновил журнал. Мой триггер сработает, когда будет выполнено обновление, вставка или удаление.

CREATE TRIGGER tr_usuario
    BEFORE INSERT OR DELETE OR UPDATE 
    ON public.usuario
    FOR EACH ROW
    EXECUTE PROCEDURE public.actualizarlog();

Поскольку мой триггер запускается любым из этих трех действий, я не могу точно знать, какое действие вызвало триггер, но в моем log также я хочу сохранить выполненное действие. Есть ли в Postgres определенная функция, которая сообщает мне, какое действие запускает триггер?

1 Ответ

3 голосов
/ 21 июня 2020

Есть специальная переменная TG_OP, которая обозначает операцию, которая вызвала срабатывание триггера. Это строковое чтение INSERT, UPDATE, DELETE или TRUNCATE соответственно. См. Также: «42.10.1. Триггеры при изменении данных»

...