H2添加多列MySQL语法

时间:2018-02-01 14:54:30

标签: mysql sql h2 alter-table alter

我有下表:

CREATE TABLE users (
  id   INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(256)
);

我想在一个查询中添加多个列。我在测试中使用H2很多,但在生产中我使用MySQL。两者都使用相同的DDL脚本。

H2和MySQL是否有任何通用语法允许添加多个列?

MySQL语法:

ALTER TABLE users
  ADD `col1` INT,
  ADD `col2` INT,
  ADD `col3` INT
  AFTER id;

H2语法:

ALTER TABLE users
  ADD (
    `col1` INT,
    `col2` INT,
    `col3` INT
  ) AFTER `id`;

如果有帮助,我的H2 JDBC URL是:

// note MODE=MYSQL in the end
jdbc:h2:users;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL

https://jackkoppa.github.io/cityaq-sw-issue/search?cities=Shanghai的范围内应用了补丁到H2。

修改

当然我可以使用这种语法(对于大型表来说这很糟糕),我必须管理这些AFTER语句来保存列顺序:

ALTER TABLE `users`
  ADD `col1` INT AFTER `id`;

ALTER TABLE `users`
  ADD `col2` INT AFTER `col1`;

ALTER TABLE `users`
  ADD `col3` INT AFTER `col2`;

1 个答案:

答案 0 :(得分:0)

据我所知,没有通用的语法。有些事情无法从MySQL转换为H2,“在一个语句中添加多个列”就是其中之一。我同意为大表添加单个列是可怕的,这就是为什么当我们在我的项目中遇到这种情况时,我们针对测试(H2)和产品(MySQL)分别运行迁移。