我有使用事務寫入數據到數據庫的服務器,如果所有的查詢都成功,它會提交,否則它會回滾。現在我想讓服務器的兩個實例在同一個數據庫和表上同時工作。 當我讀取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事務中提交