sql - H2 数据库 - 使用 SQL 对列重新排序

标签 sql h2

我有一个包含 1600 万个条目且没有主键的 H2 数据库。我使用以下语句成功添加了一个自动递增的主键:

ALTER TABLE
    PUBLIC.ADDRESSES ADD ID BIGINT AUTO_INCREMENT;
ALTER TABLE
    PUBLIC.ADDRESSES ADD PRIMARY KEY (ID)

现在的问题是,列顺序是 STREET, HOUSENUMBER, ..., ID,但我希望 ID 成为表格的第一列.看起来有一个相应的 ALTER TABLE 语句 MySQL ( see here ),但我无法将其适应 H2。

长话短说:如何将列顺序更改为 ID, STREET, HOUSENUMBER ...?是否有类似的解决方案:

ALTER TABLE "ADDRESSES" MODIFY COLUMN "ID" BEFORE "STREET";

如有任何帮助,我们将不胜感激。

最佳答案

H2 目前不支持重新排序列。您需要运行多个语句:

  • 首先重命名该列,然后在正确的位置添加正确名称的新列(alter table add 支持定位),最后删除旧的列。

  • 或者,可能更优雅,使用 rename table 然后 create table ... as select

关于sql - H2 数据库 - 使用 SQL 对列重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22812765/

相关文章:

database - h2 内存表,远程连接

带条件的 SQL 双聚合函数

sql - Netezza “[08S01] Communication link failure” 加载外部数据

iphone - SQLite Select 语句的更好性能

java - "SQLServerException: String or binary data would be truncated"问题 - 配置 H2 DB 进行诊断,但列大小更改未生效?

sql - 在 h2 数据库上使用 GROUP BY 时出现 JdbcSQLException

java - 如何使用 OutputStream 模拟虚拟文件对象以传递给 CSVWRITE?

sql - 从数据库中的每个表中选择每一行,其中 (columnName = value) 如果列名存在

sql - Postgres 9.4 jsonb 数组作为表

java - Flyway clean 无法删除小写的 H2 表