my $dbh = DBI->connect(XXXX); my $dbh_tx = DBI->connect(XXXX, AutoCommit => 0); # non-transactioned runSomeQueries($dbh); runSomeSubQueries($dbh); # if you need to transaction a bunch of queries together runSomeQueries($dbh_tx); runSomeSubQueries($dbh_tx); if ( $OK ) { $dbh->commit(); } else { $dbh->rollback(); }