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.

Reply via email to