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