I am using a function
CREATE FUNCTION myfunc() RETURNS trigger AS $$ ... $$ LANGUAGE plpgsql;
with a trigger,
CREATE T
Yes, TG_OP
. Per documentation:
TG_OP
Data type text; a string ofINSERT
,UPDATE
,DELETE
, orTRUNCATE
telling for which operation the trigger was fired.
Careful what you return in each case. Sometimes you want to RETURN NEW
, which is not defined in case of a DELETE
or vice versa. If it gets too complex, rather split into multiple triggers, called on separate events.
Example:
IF TG_OP = 'DELETE' THEN
-- do something
RETURN OLD; -- depends!
ELSIF TG_OP = 'UPDATE' THEN
-- do something
RETURN NEW; -- depends!
END IF;
More code examples in related answers.