I have a procedure:
create or replace procedure pro_update_last_read(in input_sensor_id integer, in read_time timestamp)
as
$$
begin
update sensor
set last_read = read_time
where sensor_id = input_sensor_id;
end;
$$ language plpgsql;
And a trigger that calls it:
create trigger tri_last_read
after insert or update of report_time
on report
execute procedure pro_update_last_read(sensor_id, report_time);
However, when creating the trigger, I get the error message:
[42883] ERROR: function pro_update_last_read() does not exist
Why is this error happening?
Best Answer
You must use a function, not a procedure:
The trigger must be defined
FOR EACH ROW
, and you cannot pass columns to the trigger function.The way you access the columns in the trigger function is via the
NEW
variable:NEW.sensor_id
andNEW.report_time
.