Вы, похоже, ищете триггер .
В SQL триггеры - это процедуры, которые вызываются (запускаются), когда происходит конкретное событие в объекте, например, когда таблицаобновляется, удаляется или добавляется.Триггеры могут реагировать на многие случаи использования, такие как реализация правил целостности бизнеса, очистка данных, аудит, безопасность, ...
В Postgres вы должны сначала определить функцию PL / pgSQL, а затем ссылаться на нее в триггере.объявление.
CREATE OR REPLACE FUNCTION my_table_function() RETURNS TRIGGER AS $my_table_trigger$
BEGIN
...
END
$my_table_trigger$ LANGUAGE plpgsql;
CREATE TRIGGER my_table_trigger
AFTER INSERT OR UPDATE OR DELETE ON mytable
FOR EACH ROW EXECUTE PROCEDURE my_table_function();
Из кода триггера у вас есть доступ к набору специальных переменных, таких как:
NEW
, OLD
: псевдо-записи, содержащие новые/ старые записи базы данных, затронутые запросом TG_OP
: операция, которая запустила триггер (INSERT
, UPDATE
, DELETE
, ...)
ИспользованиеЭти переменные и другие механизмы триггеров позволяют анализировать или изменять текущую операцию или даже прерывать ее, вызывая исключение.
Я бы порекомендовал прочитать документацию Postgres для оператора CREATE TRIGGER
и Процедура триггера (последний дает множество примеров).