@nurzhannogerbek

Как в триггере отслеживать изменение колонки на определенное значение?

В базе данных PostgreSQL есть таблица, которая называется SURVEYS (ОПРОСЫ). Выглядит она следующим образом:

| ID (uuid)                            | name (varchar) | status (boolean) | update_at (timestamp)    |  
|--------------------------------------|----------------|------------------|--------------------------|
| 9bef1274-f1ee-4879-a60e-16e94e88df38 | Doom           | 1                | 2019-03-26 00:00:00      |


В данной таблице, как вы видите, есть столбцы status (статус) и update_at (дата последнего обновления).

Если у какой-либо записи изменяется значение в столбце status на 2 и update_at на любое новое значение, необходимо запустить функцию. В самой функции собираюсь использовать ID записи, которая была изменена. Я правильно понимаю, что проверку на значение в колонке status нужно делать на уровне триггера, а не на уровне функции? Я создал такой триггер, но не уверен, насколько он правильный в моём случае.

CREATE TRIGGER СHECK_FOR_UPDATES_IN_SURVEYS
BEFORE UPDATE ON SURVEYS
FOR EACH ROW
WHEN 
	(OLD.update_at IS DISTINCT FROM NEW.update_at)
AND 
	(OLD.condition IS DISTINCT FROM NEW.condition AND NEW.condition = 2)
EXECUTE PROCEDURE CREATE_SURVEYS_QUESTIONS_RELATIONSHIP(NEW.id);
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы