Я пытаюсь игнорировать поле триггера в триггере обновления Postgres - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть триггер, настроенный для обновления столбца last_edit_date, и я пытаюсь игнорировать столбец last_access_date, так как он обновляется при каждом посещении страницы, что вызывает срабатывание триггера «last_edited», поскольку он рассматривает обновление какредактировать. Я пытаюсь использовать следующий код для триггера, но получаю следующую ошибку:

pg_execute (): Запрос не выполнен: ОШИБКА: столбец "last_access_date" не существует

Вот код -

BEGIN
 IF NOT (UPDATE(last_access_date))
 THEN
  NEW.last_edit_date := now();
  RETURN NEW;
 END IF;
END;

Также существует столбец, но он связан с триггерами (не уверен, имеет ли это значение).

1 Ответ

2 голосов
/ 04 ноября 2019

Если вы хотите игнорировать все обновления, которые изменяют last_access_date, вы можете использовать:

IF NEW.last_access_date = OLD.last_access_date THEN
   NEW.last_edit_date = current_timestamp;
END IF;

В стороне: last_access_date заставляет меня нервничать, так как многие обновления вредны для PostgreSQL. Убедитесь, что для столбца нет индекса, а для fillfactor для этой таблицы установлено значение меньше 100, чтобы вы могли получать горячие обновления для этого столбца.

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