H2 添加多列 MySQL 语法
H2 add multiple column MySQL syntax
我有以下 table:
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`;
如果有帮助,我的H2JDBCURL是:
// note MODE=MYSQL in the end
jdbc:h2:users;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
已在 this discussion 范围内应用 H2 补丁。
编辑:
当然我可以使用这种语法(这对于大型 tables 来说太可怕了)而且我必须管理这些 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`;
据我所知,没有通用的语法。有些东西不能从 MySQL 转化为 H2,"multiple add columns in one statement" 就是其中之一。我同意添加单独的列对于大型表来说是可怕的,这就是为什么当我们在我的项目中遇到这种情况时,我们 运行 将测试(H2)和生产(MySQL)的迁移分开。
我有以下 table:
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`;
如果有帮助,我的H2JDBCURL是:
// note MODE=MYSQL in the end
jdbc:h2:users;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
已在 this discussion 范围内应用 H2 补丁。
编辑:
当然我可以使用这种语法(这对于大型 tables 来说太可怕了)而且我必须管理这些 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`;
据我所知,没有通用的语法。有些东西不能从 MySQL 转化为 H2,"multiple add columns in one statement" 就是其中之一。我同意添加单独的列对于大型表来说是可怕的,这就是为什么当我们在我的项目中遇到这种情况时,我们 运行 将测试(H2)和生产(MySQL)的迁移分开。