В базе данных
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);