contatti
contacts

postgresql modify column

postgresql version 8.0 e successive

Nel database postgresql il comando per modificare il datatype
di una colonna non e' il classico
alter nometabella modify nomecolonna ...
che si usa in oracle o mysql

A partire dalla versione 8.0 di postgresql
e' stato introdotto :
alter table nometabella alter column nomecolonna type ...

Si riceve un errore quando si cerca di modificare una colonna di tipo char in integer :
ERROR: column nomecolonna cannot be cast to type integer

Per risolvere l' errore
alter table nometabella alter column nomecolonna type integer using function1(nomecolonna)
dove function1 e' una funzione che converte da char a integer

Non serve usare una funzione
quando si convertono datatype di tipo numerico (ad esempio smallint in double precision)
o quando si convertono datatype di tipo character (ad esempio char(2) in text)
o quando si convertono datatype misti (ad esempio integer in varchar(9) )
Nella maggioranza dei casi non serve usare una funzione

simplesix