Мне нужно изменить длину столбцов CHAR в таблицах в базе данных PostgreSQL v7.4. Эта версия не поддерживала возможность прямого изменения типа или размера столбца с помощью инструкции 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 ...
- скопировать базу данных из таблицы "save"
ОБНОВЛЕНИЕ 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;
Тьфу! Надеюсь, есть лучший способ? Любые предложения приветствуются. Спасибо!