Difference between SET autocommit=1 and START TRANSACTION in mysql (Have I missed something?)

Posted by tkolar on Stack Overflow See other posts from Stack Overflow or by tkolar
Published on 2010-06-01T14:38:48Z Indexed on 2010/06/01 14:53 UTC
Read the original article Hit count: 139

Filed under:
|

Hey there, I am reading up on transactions in mysql and am not sure whether I have grasped something specific correctly, and I want to be sure I understood that correctly, so here goes. I know what a transaction is supposed to do, I'm just not sure whether I understood the statement semantics or not.

So, my question is, is anything wrong, (and, if that is the case, what is wrong) with the following:

By default, autocommit mode is enabled in mysql.

Now, SET autocommit=0; will begin a transaction, SET autocommit=1; will implicitly commit. It is possible to COMMIT; as well as ROLLBACK;, in both of which cases autocommit is still set to 0 afterwards (and a new transaction is implicitly started).

START TRANSACTION; will basically SET autocommit=0; until a COMMIT; or ROLLBACK; takes place.

In other words, START TRANSACTION; and SET autocommit=0; are equivalent, except for the fact that START TRANSACTION; does the equivalent of implicitly adding a SET autocommit=0; after COMMIT; or ROLLBACK;

If that is the case, I don't understand http://dev.mysql.com/doc/refman/5.5/en/set-transaction.html#isolevel_serializable - seeing as having an isolation level implies that there is a transaction, meaning that autocommit should be off anyway?

And if there is another difference (other than the one described above) between beginning a transaction and setting autocommit, what is it?

Thanks a lot in advance for your help!

© Stack Overflow or respective owner

Related posts about mysql

Related posts about transactions