我有使用事务写入数据到数据库的服务器,如果所有的查询都成功,它会提交,否则它会回滚。现在我想让服务器的两个实例在同一个数据库和表上同时工作。 当我读取mysql的事务文档时,我注意到这句话:“开始一个事务会导致任何未决事务被提交”。这是否意味着如果服务器A启动事务A并且事务A尚未完成,则服务器B启动事务B,事务A被强制提交?这对我没有意义。如果是这种情况,我可以如何确保在事务A正常完成之前事务B不被执行? SET autocommit = 0可以替代这个问题吗?开始新的事务是否强制当前事务提交?
0
A
回答
1
假设当你说你想让服务器的两个实例同时工作时,你的意思是在同一台服务器上运行两个单独的会话。
句子“开始事务会导致任何挂起的事务被提交”指的是在同一个会话中的任何挂起的事务。从http://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
在本节(以及他们的任何同义词)中列出的语句隐含结束当前在当前会话中的任何交易,因为如果你做了执行该语句之前提交。
因此,如果会话B在提交会话A之前启动事务,它将不会强制会话A提交。
0
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)
相关问题
- 1. Ember Data - 重新提交当前事务
- 2. 如何使用事务(开始事务,提交事务)?
- 3. 的MySQL不提交当前事务
- 4. SQL开始事务没有提交
- 5. 在当前事务之外提交事务(如Oracle中的自治事务)
- 6. 在MS SQL中开始事务并提交事务
- 7. 等待其他事务在开始另一个事务之前提交/回滚?
- 8. 在事务提交之前,事务中所做的插入是否可见SELECT
- 9. 如何强制Rails的ActiveRecord提交事务刷新
- 10. 更新后提交事务
- 11. 在群中删除 - 自动提交与开始/提交事务
- 12. SQLite事务填写提交事务之前的表
- 13. Spring aop事务未提交事务
- 14. 回滚先前提交的事务
- 15. JDBC事务开始
- 16. 当提交失败时,Nhibernate是否会回滚事务?
- 17. 自动提交开启时“set transaction”是否启动事务?
- 18. postgres - 在事务提交前触发
- 19. 有未提交的事务
- 20. MySQL的:事务被提交
- 21. 没有“开始事务”的单个“提交”语句
- 22. 强制一个事务从另一个连接提交?
- 23. 的Grails:在当前事务
- 24. 在死锁后重新提交事务
- 25. 重新提交死锁事务php
- 26. 春天开始一个事务由新
- 27. 热开始,回滚,在sqlite中提交一个事务与sqlite
- 28. 事务回调或提交()
- 29. 未提交SQLite事务
- 30. 在@Transactional事务中提交