Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Re: DBI AutoCommit clarification

by mpeppler (Vicar)
on Sep 18, 2003 at 17:57 UTC ( [id://292472]=note: print w/replies, xml ) Need Help??


in reply to Re: DBI AutoCommit clarification
in thread DBI AutoCommit clarification

When Autocommit is on, instead, every statement is automatically committed, and therefore transactions are disabled, i.e. you can't rollback.
This is mostly correct. However, with MS-SQL and Sybase (and possibly others) you can still use transactions by explicitly issuing BEGIN TRAN requests in do() and/or prepare() requests.

Michael

Replies are listed 'Best First'.
Re: Re: Re: DBI AutoCommit clarification
by tantarbobus (Hermit) on Sep 18, 2003 at 18:43 UTC

    And then there is always the $dbh->begin_work() method, but I don't know how many drivers support it at this time; I know that neither DBD::mysql nor DBD::Pg support it right now. Oracle?

    The nice thing about  $dbh->begin_work() over local($dbh->{AutoCommit}) = 0; is that $dbh->begin_work() will not automatically commit on exiting scope which could be a bad thing if you missed catching an exception or forgot to rollback in the exception handler.

      If you check the DBI sources, begin_work() is nothing more than $dbh->{AutoCommit} = 0;...

      The nice thing about $dbh->begin_work() over local($dbh->{AutoCommit}) = 0; is that $dbh->begin_work() will not automatically commit on exiting scope...
      That's a good point. My first reaction was that no driver should do that, but then I looked at my sources and realized that DBD::Sybase does indeed commit silently when AutoCommit is turned back on. I'm not sure that I like that behavior - I should probably issue a message about un-committed work at that point - if you have AutoCommit turned off you should really be forced to explicitly commit or rollback any changes, and just flipping AutoCommit back on isn't the same thing.

      Michael

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://292472]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (2)
As of 2024-04-25 22:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found