it-swarm-eu.dev

Nelze přejmenovat sloupce v pohledech PostgreSQL pomocí CREATE OR VÝMĚNA)

V PostreSQL 8.3 se pokouším vytvořit pohled, který bude vypadat stejně jako existující tabulka, ale bude mít odlišné názvy sloupců.

To funguje

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;

Výše uvedené je duplikát tabulky family_tree, ale následující pokus se nezdaří:

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;
  • CHYBA: nelze změnit název sloupce pohledu "family_tree_id"

Jak lze přejmenovat sloupce?

40

Dokážu reprodukovat vaši chybu ... v mém případě jsem nejprve vytvořil sloupec jako „datum“, poté jako „x“ (snažil jsem se zjistit, zda se jedná o problém s vyhrazeným slovem; nebylo to:

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

Pokud vydáte drop view nejprve vám umožní znovu vytvořit pohled se změněným názvem. Nemám ponětí, proč create or replace to neudělá.


Objasnění Colin 't Hart :

dokumentace pro CREATE VIEW to vysvětluje docela dobře, myslím:

Nový dotaz musí vygenerovat stejné sloupce, které byly vygenerovány existujícím zobrazovacím dotazem (tj. Stejné názvy sloupců ve stejném pořadí a se stejnými datovými typy), ale na konec seznamu může přidat další sloupce.

50
Joe

Můžeš použít ALTER TABLE tbl RENAME COLUMN foo TO bar pro přejmenování sloupců zobrazení.

31
Peter Eisentraut