On Wed, 11 Feb 2004, C G wrote:
>
> > > Dear All,
> > >
> > > Could anyone explain why this function does will not work? The error
> >message
> > > is
> > > DETAIL: exceptions.RuntimeError: maximum recursion depth exceeded.
> > >
> > > CREATE FUNCTION testing() RETURNS trigger AS'
> > >
> > > plan=plpy.prepare(''INSERT INTO t1 values ($1)'',[''text''])
> > > plpy.execute(plan,[''blah''])
> > > return ''MODIFY''
> > >
> > > 'LANGUAGE plpythonu;
> >
> >Perhaps the plpy.execute is inserting into the same table as the trigger
> >is on? If that's the case, then the trigger will be recursively called
> >over and over until the "maximum recursion depth" is "exceeded".
>
> Yes, that is what is happening. My question is now, if I have a trigger on
> table t1, how should I write my function to insert 'blah' into my table when
> it is triggered?
You're likely looking for the new/old row set thing. I'm not sure how the
struct is put together in plpython. It holds the old row before the
insert, and the new row, which your trigger will actually insert in its
place.