Здравствуйте, у меня есть таблица ниже:
id | breakname | start | finish | duration
----+-----------+-------+--------+----------
Мне нужен триггер для расчета разницы между началом и концом в столбце длительности, когда данные были введены в другие столбцы.
Я создал следующий код:
CREATE OR REPLACE FUNCTION break_duration_insert_update() RETURNS trigger AS $BODY$
BEGIN
if NEW.duration is null then
NEW.duration := SET duration = break(finish) - break(start);
end if;
RETURN NEW;
end
$BODY$
LANGUAGE 'plpgsql';
CREATE TRIGGER break_duration
AFTER INSERT OR UPDATE ON break FOR EACH ROW
WHEN (NEW.duration IS NULL)
EXECUTE PROCEDURE break_duration_insert_update()
Но я получаю следующую ошибку при вводе данных:
ERROR: column "finish" does not exist
LINE 1: SELECT finish - start
^
QUERY: SELECT finish - start
CONTEXT: PL/pgSQL function break_duration_insert_update() line 4 at assignment
Я попытался ввести данные без установленного триггера, и это сработало, так что я думаю, что что-то пропустил в кодировке триггера.
Большое спасибо
Dave