Re: Do Postgres exceptions rise up the stack?

From: "Postgres User" <postgres(dot)developer(at)gmail(dot)com>
To: "Wiebe Cazemier" <halfgaar(at)gmx(dot)net>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Do Postgres exceptions rise up the stack?
Date: 2007-06-30 21:53:13
Message-ID: b88c3460706301453v574f3d84s49de8eb32ab990c7@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Where func A, B, C, and D all update the db. If an EXCEPTION is raised
in func D(), will all the transactions in the other children be rolled
back?
Or do I need to add code to enable this?

On 6/30/07, Postgres User <postgres(dot)developer(at)gmail(dot)com> wrote:
> How about this scenario:
>
> func A()
>
> begin
> x = func B();
> y = func C();
>
> z = func D();
>
> end
>
> Where func A, B, C, and D all update the db. If a funciton is raised
> in func D(), will all the transactions in the other children be rolled
> back?
> Or do I need to add code to enable this?
>
>
> On 6/30/07, Wiebe Cazemier <halfgaar(at)gmx(dot)net> wrote:
> > On Saturday 30 June 2007 23:14, Postgres User wrote:
> >
> > > A basic question about raising exceptions in Postgres:
> > >
> > > If Function A calls Function B
> > >
> > > and Func B raises an exception, will the exception roll back the
> > > transaction in Func A by default? Or do I need to trap and re-raise
> > > the exception in Func A?
> > >
> > > Thanks.
> >
> > Any exception aborts the transaction. That's how exceptions work. If you don't
> > catch them, they bubble all the way to the surface. Otherwise it would be too
> > much like if-statement error checking.
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 6: explain analyze is your friend
> >
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Wiebe Cazemier 2007-06-30 22:00:46 Re: Do Postgres exceptions rise up the stack?
Previous Message Postgres User 2007-06-30 21:52:37 Re: Do Postgres exceptions rise up the stack?