You can check which parameters has changes in a single trigger: create or replace function trg_sensor_data() returns trigger as $$ begin if NEW.p1 <> OLD.p1 then NEW.p1_tm = now(); end if; if NEW.p2 <> OLD.p2 then NEW.p2_tm = now(); end if; return NEW; end; $$ language 'plpgsql'; <!-- --> > update sensor_data set p1 = 100; > > select * from sensor_data; > > <pre> 1 rows affected > > id | p1 | p1_tm | p2 | p2_tm > -: | --: | :------------------------- | -: | :------------------ > 1 | 100 | 2020-03-17 15:08:15.877775 | 23 | 2020-01-01 11:00:00 > </pre> <!-- --> > update sensor_data set p1 = 100, p2 = 200; > > select * from sensor_data; > > <pre> 1 rows affected > > id | p1 | p1_tm | p2 | p2_tm > -: | --: | :------------------------- | --: | :----------------------- > 1 | 100 | 2020-03-17 15:08:15.877775 | 200 | 2020-03-17 15:08:15.8801 > </pre> *db<>fiddle [here](https://dbfiddle.uk/?rdbms=postgres_12&fiddle=2cf428c772fde5a36afc57f05b37f10e)*