### 13.3.3 导致隐式提交的语句

本节中列出的语句（以及它们的任何同义词）隐式结束当前会话中活动的任何事务，就好像您已经完成了[`犯罪`](commit.html)在执行语句之前。

大多数这些语句在执行后也会导致隐式提交。目的是在其自己的特殊事务中处理每个此类语句。事务控制和锁定语句是例外：如果隐式提交发生在执行之前，另一个不会在执行之后发生。

-   **定义或修改数​​据库对象的数据定义语言 (DDL) 语句。** [`改变事件`](alter-event.html),[`改变功能`](alter-function.html),[`改变程序`](alter-procedure.html),[`更改服务器`](alter-server.html),[`更改表`](alter-table.html),[`改变表空间`](alter-tablespace.html),[`改变视图`](alter-view.html),[`创建数据库`](create-database.html),[`创建事件`](create-event.html),[`创建函数`](create-function.html),[`创建索引`](create-index.html),[`创建过程`](create-procedure.html), [`创建角色`](create-role.html), [`创建服务器`](create-server.html), [`创建空间参考系统`](create-spatial-reference-system.html), [`创建表`](create-table.html), [`创建表空间`](create-tablespace.html), [`创建触发器`](create-trigger.html), [`创建视图`](create-view.html), [`删除数据库`](drop-database.html), [`掉落事件`](drop-event.html), [`拖放功能`](drop-function.html), [`删除索引`](drop-index.html), [`丢弃程序`](drop-procedure.html), [`删除角色`](drop-role.html), [`删除服务器`](drop-server.html),[`删除空间参考系统`](drop-spatial-reference-system.html),[`删除表`](drop-table.html),[`删除表空间`](drop-tablespace.html),[`下降触发器`](drop-trigger.html),[`下拉视图`](drop-view.html),[`安装插件`](install-plugin.html),[`重命名表`](rename-table.html),[`截断表`](truncate-table.html),[`卸载插件`](uninstall-plugin.html).

    [`创建表`](create-table.html)和[`删除表`](drop-table.html)语句不提交事务，如果`暂时的`使用关键字。（这不适用于临时表上的其他操作，例如[`更改表`](alter-table.html)和[`创建索引`](create-index.html)，这确实会导致提交。）但是，虽然没有发生隐式提交，但语句也不能回滚，这意味着使用此类语句会导致违反事务原子性。例如，如果您使用[`创建临时表`](create-table.html)然后回滚事务，表仍然存在。

    这[`创建表`](create-table.html)中的声明`InnoDB`作为单个事务处理。这意味着一个[`回滚`](commit.html)从用户不撤消[`创建表`](create-table.html)用户在该交易期间所做的陈述。

    [`创建表...选择`](create-table.html)创建非临时表时，会在执行语句之前和之后导致隐式提交。（没有提交发生`创建临时表...选择`.)

-   **隐式使用或修改表中的语句`mysql`数据库。** [`更改用户`](alter-user.html),[`创建用户`](create-user.html),[`删除用户`](drop-user.html),[`授予`](grant.html),[`重命名用户`](rename-user.html),[`撤销`](revoke.html),[`设置密码`](set-password.html).

-   **事务控制和锁定语句。** [`开始`](commit.html),[`锁定表`](lock-tables.html),`设置自动提交 = 1`（如果值还不是 1），[`开始交易`](commit.html),[`解锁桌子`](lock-tables.html).

    [`解锁桌子`](lock-tables.html)仅当当前已锁定任何表时才提交事务[`锁定表`](lock-tables.html)获取非事务表锁。不会发生提交[`解锁桌子`](lock-tables.html)下列的[`带读锁的刷新表`](flush.html#flush-tables-with-read-lock)因为后一条语句不获取表级锁。

    事务不能嵌套。这是当您发出[`开始交易`](commit.html)声明或其同义词之一。

    导致隐式提交的语句不能在 XA 事务中使用，而该事务处于`积极的`状态。

    这[`开始`](commit.html)声明不同于使用`开始`开头的关键字[`开始...结束`](begin-end.html)复合语句。后者不会导致隐式提交。看[第 13.6.1 节，“BEGIN ... END 复合语句”](begin-end.html).

-   **数据加载语句。** [`加载数据`](load-data.html).[`加载数据`](load-data.html)仅对使用[`新开发银行`](mysql-cluster.html)存储引擎。

-   **行政声明。** [`分析表`](analyze-table.html),[`缓存索引`](cache-index.html),[`检查表`](check-table.html),[`冲洗`](flush.html),[`将索引加载到缓存中`](load-index.html),[`优化表`](optimize-table.html),[`维修台`](repair-table.html),[`重置`](reset.html)（但不是[`重置坚持`](reset-persist.html)）。

-   **复制控制语句**.[`开始复制`](start-replica.html),[`停止复制`](stop-replica.html),[`重置副本`](reset-replica.html),[`将复制源更改为`](change-replication-source-to.html),[`将主更改为`](change-master-to.html).在 MySQL 8.0.22 中，SLAVE 关键字被替换为 REPLICA。
