Тип обновления на postgresql - PullRequest
       44

Тип обновления на postgresql

0 голосов
/ 31 января 2019

Новое в Postgres и PL / pgSQL здесь.

Как мне написать функцию PL / pgSQL для выполнения различных действий в зависимости от типа обновления (вставка, удаление и т. Д.), Внесенного в таблицу/ запись в базе данных postgres.

1 Ответ

0 голосов
/ 31 января 2019

Вы, похоже, ищете триггер .

В 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 и Процедура триггера (последний дает множество примеров).

...