我需要更改 PostgreSQL v7.4 数据库中表中 CHAR 列的长度。此版本不支持使用 ALTER TABLE 语句直接更改列类型或大小的功能。因此,例如,直接将列从 CHAR(10) 更改为 CHAR(20) 是不可能的(是的,我知道,“使用 varchars”,但在我目前的情况下这不是一个选项)。有人对如何最好地完成此任务有任何建议/技巧吗?我最初的想法:
-- 将表的数据保存在一个新的“保存”表中。CREATE TABLE save_data AS SELECT * FROM table_to_change;
-- 从要更改的第一列中删除列。ALTER TABLE table_to_change DROP column_name1; -- 对于从需要修改的第一列开始的每一列 ALTER TABLE table_to_change DROP column_name2; ...
-- 重新添加列,使用 CHAR 列的新大小 ALTER TABLE table_to_change ADD column_name1 CHAR(new_size); -- 对于删除高于 ALTER TABLE table_to_change 的每一列 ADD column_name2...
-- 复制“保存”表中的数据 UPDATE table_to_change SET column_name1=save_data.column_name1, -- 对于删除/读取的每一列 column_name2=save_date.column_name2, ... FROM save_data WHERE table_to_change.primary_key=save_data.primay_key;
呸!希望有更好的方法吗?任何建议表示赞赏。谢谢!