2013-05-16 7 views
9

sufficiente creare una nuova visualizzazione come seguepostgres cambiare tipo di dati di vista colonna dalla sconosciuta al testo

CREATE OR REPLACE VIEW gettreelistvw AS 
SELECT "CRM".groupid, 'pointrewarding'::text AS applicationid, "CM".menuid, "CM".menuname, "CM".levelstructure, "CM".moduleid, "CM".haschild, "CM".installed 
    FROM core_capabilitymap "CRM" 
    JOIN core_menus "CM" ON "CRM".menuid::text = "CM".menuid::text; 

ALTER TABLE gettreelistvw 

Quando eseguire questo errore appare

ERROR: cannot change data type of view column "applicationid" from unknown to text

anche se già gettato il valore di applicationID colonna in testo. è ancora riconosciuto come tipo di dati sconosciuto

'pointrewarding'::text 

Anche il metodo alternativo di conversione postgres non ha funzionato.

CAST('pointrewarding' AS TEXT) 

Come risolvere questo problema.

+0

È necessario controllare questo DBA StackExchange: http://dba.stackexchange.com/questions/586/cant-rename-columns-in-postgresql-views-with-create-or-replace – Red15

risposta

13

Se si desidera modificare il tipo di dati delle colonne di una vista, è necessario rilasciarlo, quindi crearlo.

Version 9.2 docs

CREATE OR REPLACE VIEW .... The new query must generate the same columns that were generated by the existing view query (that is, the same column names in the same order and with the same data types), but it may add additional columns to the end of the list.

corsivo è mio.

Problemi correlati