Thread: change column data type from smallint to integer

change column data type from smallint to integer

From
"pobox@verysmall.org"
Date:
Hello,

we run 'out of space' in one of our columns which is smallint and we
need to make it integer.

I did some research and found out that the only way is to create a new
column with integer data type, then SET new = old, then drop old and
rename new like old [1].

Could somebody confirm if this is really the best way and if it is
stable in respect to indexes, RI, triggers, stored procedures, etc.

Thank you,
Iv

[1]
http://www.foranewliberty.com/blog/archives/2005/01/15/changing-data-types-in-postgresql/


Re: change column data type from smallint to integer

From
Alvaro Herrera
Date:
On Thu, Sep 08, 2005 at 04:22:07AM +0200, pobox@verysmall.org wrote:

Hi,

> we run 'out of space' in one of our columns which is smallint and we
> need to make it integer.
>
> I did some research and found out that the only way is to create a new
> column with integer data type, then SET new = old, then drop old and
> rename new like old [1].
>
> Could somebody confirm if this is really the best way and if it is
> stable in respect to indexes, RI, triggers, stored procedures, etc.

In 8.0, you can alter the type directly in the table.  In releases
before 8.0, you have found the right workaround.

--
Alvaro Herrera -- Valdivia, Chile         Architect, www.EnterpriseDB.com
"Crear es tan difícil como ser libre" (Elsa Triolet)

Re: change column data type from smallint to integer

From
"pobox@verysmall.org"
Date:
Alvaro Herrera wrote:
> On Thu, Sep 08, 2005 at 04:22:07AM +0200, pobox@verysmall.org wrote:
>
> Hi,
>
>> we run 'out of space' in one of our columns which is smallint and we
>> need to make it integer.
>>
>> I did some research and found out that the only way is to create a new
>> column with integer data type, then SET new = old, then drop old and
>> rename new like old [1].
>>
>> Could somebody confirm if this is really the best way and if it is
>> stable in respect to indexes, RI, triggers, stored procedures, etc.
>
> In 8.0, you can alter the type directly in the table.  In releases
> before 8.0, you have found the right workaround.

Thank you, Alvaro, for the confirmation!