Обсуждение: BEFORE UPDATE trigger also fires at insert?

Поиск
Список
Период
Сортировка

BEFORE UPDATE trigger also fires at insert?

От
Clemens Eisserer
Дата:
Hi,

I've defined a small trigger to increment a field each time the row is updated:

> CREATE TRIGGER inc_trigger BEFORE UPDATE ON Table FOR EACH ROW EXECUTE PROCEDURE inc_function();

Works quite well, however the trigger is also fired if the table
itself is modified.
When deleting or inserting a single row, the trigger is executed for
all rows contained in the table.

Is this intetional, and if so, how can I get the behaviour to only
execute the trigger when an update on the relation is performed?

Thank you in advance, Clemens

Re: BEFORE UPDATE trigger also fires at insert?

От
Tom Lane
Дата:
Clemens Eisserer <linuxhippy@gmail.com> writes:
> I've defined a small trigger to increment a field each time the row is updated:

>> CREATE TRIGGER inc_trigger BEFORE UPDATE ON Table FOR EACH ROW EXECUTE PROCEDURE inc_function();

> Works quite well, however the trigger is also fired if the table
> itself is modified.
> When deleting or inserting a single row, the trigger is executed for
> all rows contained in the table.

> Is this intetional, and if so, how can I get the behaviour to only
> execute the trigger when an update on the relation is performed?

That trigger definition will most certainly only fire on updates.

Are you sure you don't have additional trigger definitions calling the
same function?  Or maybe there are some rules on the table that result
in update actions?

            regards, tom lane