Обсуждение: BUG #5319: recursion in the triggers

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

BUG #5319: recursion in the triggers

От
"Michail Antonov"
Дата:
The following bug has been logged online:

Bug reference:      5319
Logged by:          Michail Antonov
Email address:      atin65536@gmail.com
PostgreSQL version: 8.4.2
Operating system:   Windows XP
Description:        recursion in the triggers
Details:

I have 'after insert' trigger, which call function, which insert row in the
same table. I expect, that trigger will be called again, but it does not
heppened.

Reply me, is it a bug or feature?

Re: BUG #5319: recursion in the triggers

От
Robert Haas
Дата:
On Sun, Feb 7, 2010 at 8:03 PM, Michail Antonov <atin65536@gmail.com> wrote:
> The following bug has been logged online:
>
> Bug reference: =A0 =A0 =A05319
> Logged by: =A0 =A0 =A0 =A0 =A0Michail Antonov
> Email address: =A0 =A0 =A0atin65536@gmail.com
> PostgreSQL version: 8.4.2
> Operating system: =A0 Windows XP
> Description: =A0 =A0 =A0 =A0recursion in the triggers
> Details:
>
> I have 'after insert' trigger, which call function, which insert row in t=
he
> same table. I expect, that trigger will be called again, but it does not
> heppened.
>
> Reply me, is it a bug or feature?

I don't believe there's anything in the server that would prevent
infinite recursion in a case like this, so my guess is that your code
isn't working the way you think it's working.  Since you haven't
provided a test case it's hard to speculate as to what the problem
might be.

...Robert

Re: BUG #5319: recursion in the triggers

От
Russell Smith
Дата:
Michail Antonov wrote:
> The following bug has been logged online:
>
> Bug reference:      5319
> Logged by:          Michail Antonov
> Email address:      atin65536@gmail.com
> PostgreSQL version: 8.4.2
> Operating system:   Windows XP
> Description:        recursion in the triggers
> Details:
>
> I have 'after insert' trigger, which call function, which insert row in the
> same table. I expect, that trigger will be called again, but it does not
> heppened.
>
> Reply me, is it a bug or feature?
>
>
I would argue this is a feature.  Foreign keys are implemented as
triggers.  There are many cases where you want rows inserted on triggers
to also run checks on the data for validity and those are usually
written in triggers.

If you need to protect against this, you will need to use the NEW row to
find out if it's one of the automatically inserted rows.  If that's the
case, don't do anything.

Regards

Russell