DB2:如何在现有列之间添加新列?

DB2: How to add new column between existing columns?

我有一个现有的 DB2 数据库和一个 table 名为 employee 有列 id,e_name,e_mobile_no,e_dob,e_address

如何在 e_mobile_no 之前添加新列 e_father_name

您应该尝试使用允许更改 table 结构的 ADMIN_MOVE_TABLE 过程。

ALTER TABLE 只允许在 table 的末尾添加列。原因是它会改变 table 的物理结构,即每一行都需要适应新格式。这将是相当昂贵的。

使用上述过程 ADMIN_MOVE_TABLE 您将复制整个 table 并在该过程中更改 table 结构。它需要大量 space 和时间。

我总是做以下事情 --

  • 获取 table 数据的 backup/dump 和 db2look (如果像我一样转储到 CSV 文件,我建议以新格式转储,例如将新列的 null 放在正确的位置。

  • 删除table和索引

  • 使用新列创建 table

  • 使用旧值加载数据

  • 重新创建所有索引和运行统计信息。

做几次就过时了。

在 DB2 IBM i v7r1 中你可以做到,试试你的 DB2 版本

alter table yourtable
add column e_father_name varchar(10) before e_mobile_no