最佳答案
我正在阅读 MySQL 中的事务,不确定自己是否正确地掌握了一些特定的东西,我想确保自己正确地理解了这一点,所以现在开始。我知道事务应该做什么,只是不确定我是否理解了语句的语义。
所以,我的问题是,下面的内容有什么问题吗(如果是这样的话,问题出在哪里) :
默认情况下,自动提交模式在 MySQL 中是启用的。
现在,SET autocommit=0;
将开始一个事务,SET autocommit=1;
将隐式提交。对于 COMMIT;
和 ROLLBACK;
都是可能的,在这两种情况下,事后自动提交仍然设置为0(并且隐式启动了一个新的事务)。
START TRANSACTION;
基本上是 SET autocommit=0;
,直到 COMMIT;
或 ROLLBACK;
发生。
换句话说,START TRANSACTION;
和 SET autocommit=0;
是等价的,除了 START TRANSACTION;
等价于在 COMMIT;
或 ROLLBACK;
之后隐式添加一个 SET autocommit=1;
如果是这样的话,我不理解 http://dev.mysql.com/doc/refman/5.5/en/set-transaction.html#isolevel_serializable-看到有一个隔离级别意味着有一个事务,这意味着自动提交无论如何都应该关闭?
如果在开始一个事务和设置自动提交之间还有另一个区别(除了上面描述的) ,那么是什么?