Documentation Home
MySQL 8.0 参考手册  / 第十七章复制  / 17.5 复制注意事项和技巧  / 17.5.1 复制特性和问题  /  17.5.1.7 CREATE TABLE ... SELECT 语句的复制

17.5.1.7 CREATE TABLE ... SELECT 语句的复制

CREATE TABLE ... SELECTMySQL在复制语句 时应用这些规则 :

  • CREATE TABLE ... SELECT总是执行隐式提交(第 13.3.3 节,“导致隐式提交的语句”)。

  • 如果目标表不存在,则记录如下。IF NOT EXISTS是否存在 并不重要。

    • STATEMENTMIXED 格式:语句按书面记录。

    • ROW格式:该语句被记录为一个CREATE TABLE 语句,后跟一系列插入行事件。

      在 MySQL 8.0.21 之前,该语句被记录为两个事务。从 MySQL 8.0.21 开始,在支持原子 DDL 的存储引擎上,它被记录为一个事务。有关详细信息,请参阅 第 13.1.1 节,“原子数据定义语句支持”

  • 如果 CREATE TABLE ... SELECT语句失败,则不会记录任何内容。这包括目标表存在IF NOT EXISTS但未给出的情况。

  • 如果目标表存在并IF NOT EXISTS给出,MySQL 8.0 将完全忽略该语句;没有插入或记录任何内容。

MySQL 8.0 不允许一条 CREATE TABLE ... SELECT语句对该语句创建的表以外的表进行任何更改。