Dans PostreSQL 8.3, j'essaie de créer une vue qui ressemblera à une table existante mais avec des noms de colonne différents.
Cela marche
CREATE OR REPLACE VIEW gfam.Nice_builds AS
SELECT (family_tree.family_tree_id) as x,
family_tree.family_tree_name, family_tree.family_tree_description
FROM gfam.family_tree;
Ce qui précède crée un doublon de la table family_tree mais la tentative suivante échoue:
CREATE OR REPLACE VIEW gfam.Nice_builds AS
SELECT (family_tree.family_tree_id) as x,
family_tree.family_tree_name, family_tree.family_tree_description
FROM gfam.family_tree;
Comment renommer des colonnes?
Je peux reproduire votre erreur ... dans mon cas, j'ai créé une colonne d'abord comme 'date' puis comme 'x' (essayait de voir si c'était un problème avec un mot réservé; ce n'était pas:
ERROR: cannot change name of view column "date" to "x"
Si vous émettez un drop view
d'abord, il vous permettra de recréer la vue avec un nom modifié. Je ne sais pas pourquoi create or replace
ne le fera pas.
Clarification par Colin 't Hart :
documentation pour CREATE VIEW
l'explique assez bien, je pense:
La nouvelle requête doit générer les mêmes colonnes que celles générées par la requête de vue existante (c'est-à-dire les mêmes noms de colonnes dans le même ordre et avec les mêmes types de données), mais elle peut ajouter des colonnes supplémentaires à la fin de la liste.
Vous pouvez utiliser ALTER TABLE tbl RENAME COLUMN foo TO bar
pour renommer également les colonnes de vue.