Use the record new
in the trigger function, e.g.
create or replace function before_update_on_inventory_or_options()
returns trigger language plpgsql as $$
begin
update product
set modified_at = now()
where id = new.product_id;
return new;
end $$;
You can use this function in multiple table triggers:
create trigger before_update_on_inventory
before update on inventory
for each row
execute function before_update_on_inventory_or_options();
create trigger before_update_on_options
before update on options
for each row
execute function before_update_on_inventory_or_options();
You can define a condition that determines whether the trigger function will actually be executed, e.g.:
create trigger before_update_on_inventory
before update on public.inventory
for each row
when (new.product_id is not null)
execute function before_update_on_inventory_or_options();
Note: in Postgres 10 or earlier, the syntax was execute procedure ...
. In versions 11+, procedure
is deprecated in favor of function
.