У меня есть таблица с полем временной метки, которая должна обновляться после изменения строки. Функция change_update_time()
обновляет поле метки времени, которое называется updated_time
. Мой триггер работает нормально, но я не могу добавить еще WHEN
статьи (система просто игнорирует их все).Триггер PostgreSQL «КОГДА» не работает
Код:
Это мой триггер:
CREATE TRIGGER update_updated_time_trigger
BEFORE UPDATE
ON data_table
FOR EACH ROW
WHEN (
(OLD.column1 <> NEW.column1) AND
(OLD.column2 <> NEW.column2)
)
EXECUTE PROCEDURE change_update_time();
Это мой триггер функция:
CREATE OR REPLACE FUNCTION change_update_time()
RETURNS trigger AS
$BODY$
BEGIN
NEW.updated_time = now();
RETURN NEW;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 1;
Database версии: PostgreSQL 9.3.4
Нам нужна таблица определения базовой информации. Что вы получаете с '\ d data_table' в' psql'. –
Предположительно, вы хотите, чтобы 'OLD.colname IS DISTINCT FROM NEW.colname' вместо' OLD.colname <> NEW.colname', иначе триггер не будет выполняться, когда будут задействованы значения NULL. –
Почему вы хотите добавить дополнительные предложения WHEN? Вы уже нашли решение: просто соедините их с 'AND' или' OR'. – pozs