Thread: Change column type

Change column type

From
Oleg Lebedev
Date:
I want to change a column type from VARCHAR to BIGINT. All values currently stored in the column are integers. Saving column data, recreating the column and restoring data seems to be too convoluted. Besides, I have multiple constraints declared on this column, which I will have to recreate once the column is dropped. I wonder if the easiest way to do this would be just to change the atttypid in pg_attribute?
 
I also wonder why it is possible to declare an FK constraint on a column of type VARCHAR to reference a PK column of type BIGINT?
 
Thanks.
 
Oleg

*************************************

This email may contain privileged or confidential material intended for the named recipient only.
If you are not the named recipient, delete this message and all attachments.
Any review, copying, printing, disclosure or other use is prohibited.
We reserve the right to monitor email sent through our network.

*************************************

Re: Change column type

From
Stephan Szabo
Date:
On Mon, 17 Mar 2003, Oleg Lebedev wrote:

> I want to change a column type from VARCHAR to BIGINT. All values
> currently stored in the column are integers. Saving column data,
> recreating the column and restoring data seems to be too convoluted.
> Besides, I have multiple constraints declared on this column, which I
> will have to recreate once the column is dropped. I wonder if the
> easiest way to do this would be just to change the atttypid in
> pg_attribute?

I doubt it.  bigint and varchar() don't get stored the same, so I think
that'd only corrupt your table.

> I also wonder why it is possible to declare an FK constraint on a column
> of type VARCHAR to reference a PK column of type BIGINT?

The types are considered comparable since you can do an equality
comparison on them.