Thread: Re: transactions on Postgresql

Re: transactions on Postgresql

From
Vivek Khera
Date:
>>>>> "DR" == Dave Robinson <lachesis@ignmail.com> writes:

>> my problem : if an insert fail, all following insert are aborted :-(
>>
>> NB :         it's not necessary to me that ALL  inserts , will be done
>> with succes.
>> my question  is :   if  a  BAD insert fail ,  how can i do  for  doing
>> other inserts who may be are GOOD ?
>>
>> thanks a lot for help ;-)


DR> You want to look at wrapping your do statement into an eval block you
DR> can then capture the insert death in $@

Perl does not die; Postgres goes into ABORT STATE after the first
failure, and that is his problem.  The only real way around this is to
not put the whole thing in a transaction.

--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Vivek Khera, Ph.D.                Khera Communications, Inc.
Internet: khera@kciLink.com       Rockville, MD       +1-240-453-8497
AIM: vivekkhera Y!: vivek_khera   http://www.khera.org/~vivek/

Re: transactions on Postgresql

From
lachesis@ignmail.com (Dave Robinson)
Date:
Vivek Khera <khera@kcilink.com> wrote in message news:<x77kz4n9n3.fsf@yertle.kciLink.com>...
> >>>>> "DR" == Dave Robinson <lachesis@ignmail.com> writes:
>
> >> my problem : if an insert fail, all following insert are aborted :-(
> >>
> >> NB :         it's not necessary to me that ALL  inserts , will be done
> >> with succes.
> >> my question  is :   if  a  BAD insert fail ,  how can i do  for  doing
> >> other inserts who may be are GOOD ?
> >>
> >> thanks a lot for help ;-)
>
>
> DR> You want to look at wrapping your do statement into an eval block you
> DR> can then capture the insert death in $@
>
> Perl does not die; Postgres goes into ABORT STATE after the first
> failure, and that is his problem.  The only real way around this is to
> not put the whole thing in a transaction.


Doh! Sorry, somehow I missed the fact that it was in a transaction.
If the code isn't put into a transaction then the eval-capture stuff
should be done.
The other option is if the conditions which generate the BAD insert
can be captured, they can be tested for. The test can then be used to
decide whether to do the insert at all for that line.