Re: Cascade Trigger Not Firing

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Judy Loomis <hoodie(dot)judy(at)gmail(dot)com>
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Cascade Trigger Not Firing
Date: 2019-09-13 19:08:49
Message-ID: 21219.1568401729@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Judy Loomis <hoodie(dot)judy(at)gmail(dot)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.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Judy Loomis 2019-09-13 19:12:26 Re: Cascade Trigger Not Firing
Previous Message Judy Loomis 2019-09-13 19:03:45 Cascade Trigger Not Firing