TiDB支持在一个alter table add column增加多个字段么

自动生成的sql在哪里可以改?

mysql的语法 差不多支持

可能是Navicat的mysql的驱动还是5.7的吧

copy出来改啊,然后再执行

主要还是要看你的版本,我记得同时添加多个索引是不支持的,需要单独分开写。

应该支持,跟MySQL差不多

支持的,MySQL的语法基本都兼容

哦,我还以为可以在工具内部改呢 :smile:

6.0以后DDL语法有改进,可以一次执行多个字段添加。参考MySQL语法。

1、上面问题是添加列少了add column 关键字符,
alter table t add column a varchar(10) alter column existcolumnb,
add column b varchar(10) after column a

2、添加多个列的时候,add column b的时候,after前面一个未添加的列a,还是会报错的,只能一个一个列添加
3、测试版本 7.1 还是存在此问题

去掉after就可以了

应该支持,跟MySQL差不多

肯定支持把,都是标准的sql语法

你这是本身语法有问题。看看基础sql。磨刀不误砍柴工!

1 个赞

从v6.2.0开始支持增加多个字段。

4 个赞

支持alter table test322 add column (d varchar(10),e varchar(10));

:+1:

支持是支持,你这语法有问题!

支持把,都是标准sql语法

TiDB 中的 ALTER TABLE 语法主要存在以下限制:

  • 使用 ALTER TABLE 语句修改一个表的**多个模式对象(如列、索引)**时:
    • 不允许在多个更改中指定同一个模式对象。
    • TiDB 根据执行前的表结构检查合法性。例如 ALTER TABLE t ADD COLUMN c1 INT, ADD COLUMN c2 INT AFTER c1; 会报错,因为表结构中不存在名字为 c1 的列。
    • TiDB 的执行顺序是从左往右逐个执行更改,该行为在个别场景下和 MySQL 不兼容。
  • 不支持主键列上 Reorg-Data 类型的变更。
  • 不支持分区表上的列类型变更。
  • 不支持生成列上的列类型变更。
  • 不支持部分数据类型(例如,部分时间类型、Bit、Set、Enum、JSON 等)的变更,因为 TiDB 中的 CAST 函数与 MySQL 的行为存在兼容性问题。
  • 不支持空间数据类型。
  • ALTER TABLE t CACHE | NOCACHE 不是 MySQL 标准语法,而是 TiDB 扩展功能,参见缓存表

其它限制可参考:TiDB 中 DDL 语句与 MySQL 的兼容性情况

1 个赞