it-swarm-eu.dev

Spalten in PostgreSQL-Ansichten können nicht mit CREATE OR REPLACE) umbenannt werden

In PostreSQL 8.3 versuche ich, eine Ansicht zu erstellen, die genau wie eine vorhandene Tabelle aussieht, aber unterschiedliche Spaltennamen hat.

Das funktioniert

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;

Oben wird ein Duplikat der Tabelle family_tree erstellt, aber der folgende Versuch schlägt fehl:

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;
  • FEHLER: Name der Ansichtsspalte "family_tree_id" kann nicht geändert werden

Wie kann ich Spalten umbenennen?

40

Ich kann Ihren Fehler reproduzieren ... in meinem Fall habe ich zuerst eine Spalte als 'Datum' und dann als 'x' erstellt (ich habe versucht festzustellen, ob es sich um ein Problem mit einem reservierten Wort handelt; es war nicht:

ERROR:  cannot change name of view column "date" to "x"

Wenn Sie ein drop view Zuerst können Sie die Ansicht mit einem geänderten Namen neu erstellen. Ich habe keine Idee warum create or replace wird es nicht tun.


Klarstellung durch Colin 't Hart :

Die Dokumentation für CREATE VIEW erklärt es ziemlich gut, ich denke:

Die neue Abfrage muss dieselben Spalten generieren, die von der vorhandenen Ansichtsabfrage generiert wurden (dh dieselben Spaltennamen in derselben Reihenfolge und mit denselben Datentypen), kann jedoch zusätzliche Spalten am Ende der Liste hinzufügen.

50
Joe

Mit ALTER TABLE tbl RENAME COLUMN foo TO bar Können Sie auch Ansichtsspalten umbenennen.

31