Обсуждение: BUG #5319: recursion in the triggers
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?
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
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