2012/5/14 Tom Lane <t...@sss.pgh.pa.us> > Carlos Mennens <carlos.menn...@gmail.com> writes: > > I'm not understanding why I'm not able to change this column type from > > char to integer? > > > forza=# ALTER TABLE customers > > ALTER COLUMN cust_id TYPE integer; > > ERROR: column "cust_id" cannot be cast to type integer > > Try "ALTER ... cust_id TYPE integer USING cust_id::integer". > > If you don't specify a USING expression, the command requires an > implicit coercion from one type to the other, and there is none from > char(n) to int. You can force it with an explicit coercion, though. > > It strikes me that "cannot be cast" is a poor choice of words here, > since the types *can* be cast if you try. Would it be better if the > message said "cannot be cast implicitly to type foo"? We could also > consider a HINT mentioning use of USING. > Tom, as usual you are right. I find it reasonable to improve the message and to add the hint into an error report in this case.
-- // Dmitriy.