diff --git a/mysql-compatibility.md b/mysql-compatibility.md index 871b8d78aaa5..95f72a099d5c 100644 --- a/mysql-compatibility.md +++ b/mysql-compatibility.md @@ -104,7 +104,7 @@ MySQL 系统变量 `optimizer_switch` 在 TiDB 中是只读的,对查询计划 TiDB 中,所有支持的 DDL 变更操作都是在线执行的。与 MySQL 相比,TiDB 中的 DDL 存在以下限制: -* 不能在单条 `ALTER TABLE` 语句中完成多个操作。例如,不能在单个语句中添加多个列或索引,否则,可能会输出 `Unsupported multi schema change` 的错误。 +* 使用 `ALTER TABLE` 语句修改一个表的多个模式对象(如列、索引)时,不允许在多个更改中指定同一个模式对象。例如,`ALTER TABLE t1 MODIFY COLUMN c1 INT, DROP COLUMN c1` 在两个更改中都指定了 `c1` 列,执行该语句会输出 `Unsupported operate same column/index` 的错误。 * `ALTER TABLE` 不支持少部分类型的变更。比如,TiDB 不支持从 `DECIMAL` 到 `DATE` 的变更。当遇到不支持的类型变更时,TiDB 将会报 `Unsupported modify column: type %d not match origin %d` 的错误。更多细节,请参考 [`ALTER TABLE`](/sql-statements/sql-statement-modify-column.md)。 * TiDB 中,`ALGORITHM={INSTANT,INPLACE,COPY}` 语法只作为一种指定,并不更改 `ALTER` 算法,详情参阅 [`ALTER TABLE`](/sql-statements/sql-statement-alter-table.md)。 * 不支持添加或删除 `CLUSTERED` 类型的主键。要了解关于 `CLUSTERED` 主键的详细信息,请参考[聚簇索引](/clustered-indexes.md)。 diff --git a/sql-statements/sql-statement-add-column.md b/sql-statements/sql-statement-add-column.md index 8f32510e0637..6ee988e59de5 100644 --- a/sql-statements/sql-statement-add-column.md +++ b/sql-statements/sql-statement-add-column.md @@ -133,7 +133,6 @@ SELECT * FROM t1; ## MySQL 兼容性 -* 不支持在一条语句中同时添加多列。 * 不支持将新添加的列设为 `PRIMARY KEY`。 * 不支持将新添加的列设为 `AUTO_INCREMENT`。 * 对添加生成列有局限性,具体可参考:[生成列局限性](/generated-columns.md#生成列的局限性)。 diff --git a/sql-statements/sql-statement-add-index.md b/sql-statements/sql-statement-add-index.md index ca75ab806d9c..c75b1ff82fcc 100644 --- a/sql-statements/sql-statement-add-index.md +++ b/sql-statements/sql-statement-add-index.md @@ -109,7 +109,6 @@ EXPLAIN SELECT * FROM t1 WHERE c1 = 3; * 不支持 `FULLTEXT`,`HASH` 和 `SPATIAL` 索引。 * 不支持降序索引(类似于 MySQL 5.7)。 -* 目前尚不支持在一条中同时添加多个索引。 * 无法向表中添加 `CLUSTERED` 类型的 `PRIMARY KEY`。要了解关于 `CLUSTERED` 主键的详细信息,请参考[聚簇索引](/clustered-indexes.md)。 ## 另请参阅 diff --git a/sql-statements/sql-statement-alter-table.md b/sql-statements/sql-statement-alter-table.md index 5aa7e63a9461..e895ab9a1499 100644 --- a/sql-statements/sql-statement-alter-table.md +++ b/sql-statements/sql-statement-alter-table.md @@ -154,7 +154,7 @@ Query OK, 0 rows affected, 1 warning (0.25 sec) TiDB 中的 `ALTER TABLE` 语法主要存在以下限制: -- 不支持在单个 `ALTER TABLE` 语句中进行多个更改。 +- 使用 `ALTER TABLE` 语句修改一个表的多个模式对象(如列、索引)时,不允许在多个更改中指定同一个模式对象。 - 不支持主键列上 [Reorg-Data](/sql-statements/sql-statement-modify-column.md#reorg-data-change) 类型的变更。 - 不支持分区表上的列类型变更。 - 不支持生成列上的列类型变更。 diff --git a/sql-statements/sql-statement-change-column.md b/sql-statements/sql-statement-change-column.md index ee66ac20c6ee..b8bff94e2863 100644 --- a/sql-statements/sql-statement-change-column.md +++ b/sql-statements/sql-statement-change-column.md @@ -149,7 +149,6 @@ ERROR 8200 (HY000): Unsupported modify column: change from original type decimal ## MySQL 兼容性 -* 不支持在单个 `ALTER TABLE` 语句中进行多个更改。 * 不支持主键列上 [Reorg-Data](/sql-statements/sql-statement-modify-column.md#Reorg-Data Change) 类型的变更。 * 不支持分区表上的列类型变更。 * 不支持生成列上的列类型变更。 diff --git a/sql-statements/sql-statement-drop-column.md b/sql-statements/sql-statement-drop-column.md index cc8a083dd623..3ebf4f259da9 100644 --- a/sql-statements/sql-statement-drop-column.md +++ b/sql-statements/sql-statement-drop-column.md @@ -123,7 +123,6 @@ SELECT * FROM t1; ## MySQL 兼容性 -* 目前不支持在一条语句中同时删除多个列。 * 目前不支持删除主键列或组合索引相关列。 ## 另请参阅 diff --git a/sql-statements/sql-statement-modify-column.md b/sql-statements/sql-statement-modify-column.md index cb1099b4269e..f7100df9acfc 100644 --- a/sql-statements/sql-statement-modify-column.md +++ b/sql-statements/sql-statement-modify-column.md @@ -169,13 +169,6 @@ CREATE TABLE `t1` ( ## MySQL 兼容性 -* 不支持使用单个 `ALTER TABLE` 语句修改多个列,例如: - - ```sql - ALTER TABLE t1 MODIFY col1 BIGINT, MODIFY id BIGINT NOT NULL; - ERROR 1105 (HY000): Unsupported multi schema change - ``` - * 不支持修改主键列上需要 Reorg-Data 的类型,但是支持修改 Meta-Only 的类型。例如: ```sql diff --git a/system-variables.md b/system-variables.md index 4b0feaddb48a..37fe3801b497 100644 --- a/system-variables.md +++ b/system-variables.md @@ -689,21 +689,6 @@ MPP 是 TiFlash 引擎提供的分布式计算框架,允许节点之间的数 - 默认值:`OFF` - 这个变量用于控制是否允许在创建生成列或者表达式索引时引用自增列。 -### `tidb_enable_change_multi_schema` - -> **警告:** -> -> TiDB 未来会支持更多种类的多模式对象变更,该系统变量将在后续版本中移除。 - -- 作用域:GLOBAL -- 是否持久化到集群:是 -- 默认值:`OFF` -- 这个变量用于控制是否允许在一个 `ALTER TABLE` 语句中变更多个列或者索引。该变量值为 `ON` 时,仅支持以下多模式对象变更: - - 添加多列,例如 `ATLER TABLE t ADD COLUMN c1 INT, ADD COLUMN c2 INT;`。 - - 删除多列,例如 `ATLER TABLE t DROP COLUMN c1, DROP COLUMN c2;`。 - - 删除多个索引,例如 `ATLER TABLE t DROP INDEX i1, DROP INDEX i2;`。 - - 删除被单列索引所覆盖的列,例如 `ALTER TABLE t DROP COLUMN c1`, 表结构中包含 `INDEX idx(c1)`。 - ### `tidb_enable_cascades_planner` > **警告:**