Hi,

My code just fails to insert the records  to the database.  Anybody can figure out the 
problem?  Thanks in advance.
Here is the snippet:
#########################################################
my $dbn="newgene";
my $dbh=DBI->connect("dbi:ODBC:$dbn",'','')|| die "$DBI::errstr\n";
my @records = (
                ["La", "M",  "1" ],
                ["Tim Bunce","M","2" ]
);

my $sql = qq{ INSERT INTO clients VALUES ( ?, ?, ? ) };
my $sth = $dbh->prepare( $sql )|| die "$DBI::errstr\n";

for( @records ) {
  eval {
    $sth->bind_param( 1, @$_->[0], SQL_VARCHAR );
    $sth->bind_param( 2, @$_->[1], SQL_VARCHAR );
    $sth->bind_param( 3, @$_->[2], SQL_INTEGER );
    $sth->execute() || die "$DBI::errstr\n";
    $dbh->commit() || die "$DBI::errstr\n";
  };

  if( $@ ) {
   warn "Database error: $DBI::errstr\n";
   $dbh->rollback(); #just die if rollback is failing
  }
}

$sth->finish();
$dbh->disconnect();
#########################################################
where column 3 is the primary key of table clients.   Error message: 
"Database error:
rollback ineffective with AutoCommit enabled at myprogram.pl line 55."

Regards
Haifeng

Reply via email to