J'ai besoin de modifier la longueur des colonnes CHAR dans les tables d'une base de données PostgreSQL v7.4. Cette version ne permet pas de modifier directement le type ou la taille des colonnes à l'aide de l'instruction ALTER TABLE. Ainsi, modifier directement une colonne de CHAR(10) à CHAR(20) par exemple n'est pas possible (oui, je sais, "utiliser des varchars", mais ce n'est pas une option dans ma situation actuelle). Je ne sais pas si vous avez des conseils ou des astuces sur la meilleure façon d'y parvenir. Mes premières réflexions :
-- Sauvegarder les données de la table dans une nouvelle table "save". CREATE TABLE save_data AS SELECT * FROM table_to_change ;
-- Supprimer les colonnes à partir de la première colonne à modifier. ALTER TABLE table_to_change DROP nom_colonne1 ; -- pour chaque colonne en commençant par la première qui doit être modifiée ALTER TABLE table_to_change DROP nom_colonne2 ; ...
-- Ajoutez les colonnes, en utilisant la nouvelle taille de la colonne CHAR ALTER TABLE table_to_change ADD column_name1 CHAR(new_size) ; -- pour chaque colonne supprimée ci-dessus ALTER TABLE table_to_change ADD column_name2...
-- Copier la base de données de la table "save". UPDATE table_to_change SET column_name1=save_data.column_name1, -- pour chaque colonne supprimée/lue ci-dessus column_name2=save_date.column_name2, ... FROM save_data WHERE table_to_change.primary_key=save_data.primay_key ;
Beurk ! J'espère qu'il y a une meilleure solution ? Toutes les suggestions sont les bienvenues. Merci d'avance.