最佳答案
我正在阅读 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-看到有一个隔离级别意味着有一个事务,这意味着自动提交无论如何都应该关闭?
如果在开始一个事务和设置自动提交之间还有另一个区别(除了上面描述的) ,那么是什么?