【问题标题】:does starting a new transaction forces the current transaction to commit?开始一个新事务会强制当前事务提交吗?
【发布时间】:2013-11-14 17:55:09
【问题描述】:
我的服务器使用事务将数据写入数据库,如果所有查询都成功,它将提交,否则将回滚。现在我想让服务器的两个实例同时在同一个数据库和表上工作。
当我阅读 mysql 的事务文档时,我注意到这句话:“开始一个事务会导致提交任何待处理的事务”。这是否意味着如果服务器 A 启动事务 A,而事务 A 尚未完成,服务器 B 启动事务 B,则事务 A 被强制提交?这对我来说没有意义。如果是这种情况,我如何确保在事务 A 正常完成之前不执行事务 B?
SET autocommit = 0 可以替代这个问题吗?
【问题讨论】:
标签:
mysql
transactions
autocommit
【解决方案2】:
mysql> CREATE TEMPORARY TABLE super(id int);
Query OK, 0 rows affected (0.04 sec)
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO super VALUE(1);
Query OK, 1 row affected (0.00 sec)
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM super;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)