我有一个现有的DB2数据库和一个名为的表
employee
列
id,e_name,e_mobile_no,e_dob,e_address
。
如何在e_father_name
之前添加新列e_mobile_no
?
答案 0 :(得分:2)
您应该尝试使用允许更改表结构的ADMIN_MOVE_TABLE过程。
ALTER TABLE仅允许在表的末尾添加列。原因是它会改变表的物理结构,即每行需要适应新格式。这将是非常昂贵的。
使用上述过程ADMIN_MOVE_TABLE
,您将复制整个表,并在此过程中更改表结构。它需要大量的空间和时间。
答案 1 :(得分:0)
我总是这样做 -
进行表数据和db2look的备份/转储 (如果你像我一样转储到CSV文件,我建议以新格式转储,例如在正确的位置为新列添加null。
删除表和索引
使用新colunn
使用旧值加载数据
重新创建所有索引和runstats。
一旦你完成它几次就会变成旧帽子。
答案 2 :(得分:0)
在DB2 IBM i v7r1中,您可以执行此操作,尝试使用DB2版本
alter table yourtable
add column e_father_name varchar(10) before e_mobile_no