hicham bouzdad <[EMAIL PROTECTED]> wrote in message 
news:<[EMAIL PROTECTED]>...
> Hi everybody,
> 
> my subject is about :   DBI / PostgreSql  &  Transactions  with Perl.
> my code is :
> 
> $dbh->{AutoCommit} = 0;      #-------- begin of transaction
> while (<FILE>) {
> ...
>     $sql  =  "insert into $table ($col) values ($val)";
>     $res  =  $dbh->do($sql);
> }
> 
> $dbh->rollback;                    #--------- end of transaction
> 
> 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 ;-)


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

i.e.

eval{
$res  =  $dbh->do($sql);
};
if ($@){
#if the do failed - do whatever logging/checking you want 
}

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to