Judy Loomis <hoodie.judy@gmail.com> writes: > I have a trigger that updates a target column when some other columns > change. > There is another trigger on the target column to update another table (the > column can be changed in other ways besides the first trigger). > If I update the target column directly the expected trigger fires. > But if the 1st trigger changes the target column and it wasn't in the list > of updated columns, the 2nd trigger doesn't fire. > Is this expected behavior?
Per the manual (NOTES section of the CREATE TRIGGER man page):
A column-specific trigger (one defined using the UPDATE OF column_name syntax) will fire when any of its columns are listed as targets in the UPDATE command's SET list. It is possible for a column's value to change even when the trigger is not fired, because changes made to the row's contents by BEFORE UPDATE triggers are not considered. Conversely, a command such as UPDATE ... SET x = x ... will fire a trigger on column x, even though the column's value did not change.
It's not really practical for trigger firings to depend on what other triggers did or might do --- you'd soon end up with circularities.