ОБНОВЛЕНИЕ ДРУГОЙ КОЛОННЫ В ПОСЛЕ ОБНОВЛЕНИЯ TRIGGER - PullRequest
0 голосов
/ 02 марта 2020

У меня есть таблица с тремя столбцами: id, date и dateDekete

Я пытаюсь выполнить обновление для столбца dateDelete после обновления для другого столбца (дата столбца), используя AFTER UPDATE TRIGGER. Код, который я использую для создания своего триггера, следующий:

CREATE OR REPLACE FUNCTION update_delete_date_allocation()
  RETURNS trigger LANGUAGE plpgsql AS  $body$
    BEGIN
        NEW."dateDelete" := NEW.date + 1;
        RETURN NEW;
      END;
 $body$;

CREATE TRIGGER delete_date_allocation_trg
    AFTER INSERT OR UPDATE ON client.client_portfolio_allocation
    FOR EACH ROW
    EXECUTE PROCEDURE update_delete_date_allocation();

Хотя код выполняется нормально без сообщения об ошибке, последний столбец, который я пытаюсь обновить, не изменяется.

Мне было интересно, возможно ли это сделать. И если так, что я должен изменить в своем коде?

Я использую Postgres 11.5.

1 Ответ

0 голосов
/ 02 марта 2020

вы не можете изменить новую запись в триггере AFTER, вам нужно объявить триггер как триггер BEFORE:

CREATE TRIGGER delete_date_allocation_trg
    <B><i>BEFORE</i></B> INSERT OR UPDATE ON client.client_portfolio_allocation
    FOR EACH ROW
    EXECUTE PROCEDURE update_delete_date_allocation();
...