LINUX.ORG.RU

Почему не обновляется значение поля через триггер и функцию в PostgreSQL? (Отладочный вывод в наличии)

 , , ,


0

1

Имеется таблица 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?

★★★★★