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