Триггеры и производители Postgres (столбец «new» отношения не существует) - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь создать триггер и процедуру для обновления столбца last_changed_timestamp после UPDATE и INSERT.

Я могу зарегистрировать функцию и триггер просто отлично, но когда я пытаюсь обновить запись, я получаюошибка.

CREATE OR REPLACE FUNCTION update_my_table_last_changed_timestamp()
        RETURNS trigger AS
$BODY$
BEGIN
        UPDATE my_table SET NEW.last_changed_timestamp = NOW();  
        RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;


CREATE TRIGGER trigger_update_my_table_last_changed_timestamp 
  BEFORE UPDATE
  ON my_table
  FOR EACH ROW
  EXECUTE PROCEDURE update_my_table_last_changed_timestamp();

column "new" of relation "my_table" does not exist

Я также не до конца понимаю, как update_my_table_last_changed_timestamp знает, какую строку предполагается обновить, и не было ли переданных ей параметров, какЯ бы получил эти переменные из триггера в процедуру.

1 Ответ

0 голосов
/ 01 февраля 2019

Изменить новую запись, нет необходимости обновлять.

BEGIN
    NEW.last_changed_timestamp = NOW();  
    RETURN NEW;
END;

Прочитайте в документации: Обзор поведения триггера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...