我是一位正在學習事務的MySQL新手,我正在使用InnoDB引擎。我看到他們要求在開始一個事務之前將autocommit設置爲0,但是在兩種方式中(將它設置爲0或1),我看到了相同的行爲:事務在提交後被驗證並通過回滾無效。將autocommit設置爲0還是1,有什麼區別?InnoDB中的MySQL事務
-1
A
回答
1
如果自動提交,那麼每當你有效地發出查詢的運行是這樣的:
start transaction;
...do a query ...
commit;
start transaction;
... do another query ...
commit
etc...
自動提交了,有沒有自動交易,你自己啓動它,這使得代碼的運行是這樣的:
start transaction
...do a query ...
...do another query ...
... etc...
commit;
如果您只發出單一命令查詢,那麼行爲沒有太大區別。當你開始發出多個連續的查詢,新的行爲真的踢它的唯一。
0
0
有3種模式:
autocommit=1
(或ON
):每個語句是一個事務。 (見Marc的回答)autocommit=0
(或OFF
):您最終必須發出COMMIT
,否則更改將會丟失。 (我看到這個模式太容易出錯用不完。)BEGIN
(或START TRANSACTION
)...COMMIT
(或ROLLBACK
):這明確地闡明瞭交易的程度。autocommit
被忽略。我認爲這是「最佳實踐」
相關問題
- 1. 請幫我理解MySQL InnoDB事務
- 2. 事務不回滾與MySQL/InnoDB
- 3. NHibernate,MySQL,InnoDB和嵌套事務
- 4. 使用MySQL和InnoDB管理Rails3中的事務
- 5. InnoDB更新MyISAM和InnoDB表的事務的行爲
- 6. 與MySQL的InnoDB
- 7. 在MySQL(InnoDB的)
- 8. InnoDB - 回滾連接的所有事務
- 9. mysql innodb中斷表
- 10. hibernate事務導致在mysql提交和隨後回滾innodb
- 11. MySQL啓動事務不與innoDB引擎一起工作
- 12. Django 1.5 mysql 5.5(InnoDb)事務異常無法回滾
- 13. Mysql中的InnoDB錯誤
- 14. 在一臺服務器上跨幾個InnoDB數據庫的MySQL事務
- 15. Mysql的InnoDB的crach
- 16. 讓joomla使用innoDB並支持事務
- 17. 將PDO(InnoDB)事務傳遞給新類
- 18. innoDB的MySQL備份
- 19. MySQL InnoDB CASCADE?
- 20. Mysql/InnoDB或Postgresql?
- 21. mysql innodb鎖
- 22. MySQL InnoDB鎖定
- 23. MYSQL - 鎖定 - InnoDB
- 24. MySQL PBXT vs InnoDB
- 25. MySQL InnoDB優化
- 26. MySQL InnoDB Global Var?
- 27. 的InnoDB/MySQL的 - 新的事務使用,而不是返回更新的數據
- 28. 在MySQL中啓用InnoDB
- 29. MySQL事務中的EXECUTE
- 30. 在Java中的MySQL事務
我有這樣的疑問: 開始交易 ......做一個查詢... ... 做另一個查詢... ... 等.. 承諾; 我只想知道在開始事務之前將自動提交設置爲0或1之間的區別。 –