mysql - 使用 MySQL,如何开始;回滚;并提交;与自动提交有关?

标签 mysql transactions

似乎您可以只使用 BEGIN 来实现您需要的所有事务;回滚和提交;。是否有某些场景需要使用自动提交?是否调用 BEGIN;将自动提交设置为假?调用 COMMIT;将自动提交设置为真?

最佳答案

可以为每个 session 或全局设置自动提交。没有需要自动提交的场景(并非所有 RDMS 都支持自动提交模式)。在我看来,默认情况下自动提交和 true 的原因是因为 MyISAM 引擎根本不支持事务,因此为了减轻为 MyISAM 编写的移植应用程序,它们模仿相同的行为。

Does calling BEGIN; set autocommit to false? Does calling COMMIT; set autocommit to true?

来自 mysql documentation

To disable autocommit mode for a single series of statements, use the START TRANSACTION statement: ...
With START TRANSACTION, autocommit remains disabled until you end the transaction with COMMIT or ROLLBACK. The autocommit mode then reverts to its previous state.

关于mysql - 使用 MySQL,如何开始;回滚;并提交;与自动提交有关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9643738/

相关文章:

mysql - 如何使用带有 SCHEDULE 语句的事务?

mysql - 在 mySQL 中组合两个查询

java - 等待一系列脚本中的单个 Shell 脚本运行完成后再继续(Java、MySQL、JUnit)

php - 如何从mysql日期中提取年、月、日、小时、分钟、秒?

java - .NET 4.0 是否有类似于 Java 容器管理事务的功能?

sql - 我如何在 Firebird 中使用事务?

php - 具有大结果集的 PDO/MySQL 内存消耗

mysql - 在 Flex 移动应用程序中显示可滚动图片网格的最佳方法

java - 使用 Java 处理 Postgresql 事务

php - MySQLi insert_id 事务后返回0