On 07-Apr-2006 Jie Zhang wrote:
> Hi,
> 
> If I initiate a connection using autocommit=0 in DBI and I don't do a 
> explicit connection->commit(), should transactions automatically commit 
> after I do an explicit connection->disconnect()?  I was expecting an 
> automatica rollback.  But the testing result is just the opposite.
> 
> For example:
>  my $databaseHandle = DBI->connect( "", "[EMAIL PROTECTED]", "$pass", 
> {AutoCommit => 0}, "Oracle" )
>  deleteRecord;
> $databaseHandle->disconnect();
> 
> Should the delete query be commited?
> 
> thanks,
> 
> Jie

According to the DBI docs:

           The transaction behaviour of the "disconnect" method
           is, sadly, undefined.  Some database systems (such as
           Oracle and Ingres) will automatically commit any out-
           standing changes, but others (such as Informix) will
           rollback any outstanding changes.  Applications not
           using "AutoCommit" should explicitly call "commit" or
           "rollback" before calling "disconnect".

I was a bit surprised to see the comment on Oracle automatically committing. I
believe there is a way to stop this happening at the oci level.

Martin
--
Martin J. Evans
Easysoft Ltd, UK
http://www.easysoft.com

Reply via email to