A standard Perl script using DBI will
automatically perform a rollback whenever the script exits. In the
case of persistent database connections, the database handle will not
be destroyed and hence no automatic rollback will occur. At first
glance it even seems to be possible to handle a transaction over
multiple requests, but the temptation should be avoided because
different requests are handled by different mod_perl processes, and a
mod_perl process does not know the state of a specific transaction
that has been started by another mod_perl process.

In general, it is good practice to perform an explicit commit or
rollback at the end of every script. To avoid inconsistencies in the
database in case AutoCommit is
Off and the script terminates prematurely without
an explicit rollback, the Apache::DBI module uses
a PerlCleanupHandler to issue a rollback at the
end of every request.