Редактировать: я добавил обновленный код в свое сообщение, мне не хватает return null
вне моего блока ЕСЛИ
У меня есть таблица working
с самыми последними данными и хотел бы добавить триггер для внесенных в него обновлений, чтобы я мог записать изменения, внесенные в определенный столбец в другой таблице history
.Я запускаю этот код, чтобы создать функцию триггера и протестировать ее, но получаю ошибку
SQL Error [2F005]: ERROR: control reached end of trigger procedure without RETURN
Where: PL/pgSQL function update_history()
Мой код:
-- create function for updates to track history
CREATE function update_history ()
RETURNS TRIGGER
as $$
BEGIN
IF NEW.discipline <> OLD.discipline THEN
INSERT INTO history
(ShiftId, fieldName, OldValue, NewValue)
VALUES(New.shift_id, 'discipline', OLD.discipline, NEW.discipline);
END IF;
return null; -- notice return outside the IF block
END;
$$
language plpgsql;
-- create trigger for my table after updates are made to the working table
create trigger update_history_trigger
after update on working
for each row execute PROCEDURE update_history();