MySQL什么时候默认提交(commit)或回滚(rollback)事务?
Time:2021/3/17 11:55:59
- 如果你不使用SET AUTOCOMMIT=0,MySQL 将会在一个会话中打开自动提交模式。在自动提交模式下,如果一条 SQL 语句没有返回任何错误,MySQL 将在这条 SQL 语句后立即提交。
- 如果一条 SQL 语句返回一个错误,那么 commit/rollback 依赖于这个错误。查看第国家13 章节详细描述。
- 下列的 SQL 语句在 MySQL 引起中当前事务的隐含提交:CREATE TABLE(如果使用了 MySQL 二进制日志'binlogging'),ALTER TABLE, BEGIN, CREATE INDEX, DROP DATABASE, DROP TABLE, RENAME TABLE, TRUNCATE, LOCK TABLES, UNLOCK TABLES。 在 InnoDB 中CREATE TABLE语句是作为一个单独的事务来处理的。这就意味着一个用户无法在他的事务中使用ROLLBACK撤销CREATE TABLE语句操作。
- 如果你关闭了自动提交模式,而在关闭一个连接之前又未使用COMMIT提交你的事务,那么 MySQL 将回滚你的事务。