Имеется таблица our_table с полем change_time типа TIMESTAMP DEFAULT CURRENT_TIMESTAMP.
Необходимо менять поле change_time при действиях INSERT и UPDATE.
Для этого в базе создан триггер со следующим кодом:
CREATE TRIGGER our_table_update_change_time
AFTER INSERT OR UPDATE
ON our_table
FOR EACH ROW EXECUTE PROCEDURE update_change_time_column();
Этот триггер использует следующую функцию, в которой есть отладочное сообщение:
CREATE OR REPLACE FUNCTION public.update_change_time_column()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
BEGIN
RAISE NOTICE 'Trigger our_table_update_change_time is run'
NEW.change_time: = now();
RETURN NEW;
END;
$function$;
Изменение значения в таблице приводит к вызову триггера, а из него и кода функции. Это видно из вывода:
UPDATE our_table SET about='Any new text' WHERE id='1';
ЗАМЕЧАНИЕ: Trigger our_table_update_change_time is run
UPDATE 1
Казалось бы, все работает? Нет. Изменения значение поля change_time не происходит.
Что здесь сделано неправильно? Как заставить изменяться поле change_time?