Thread: how to chane the type
i have created a table
userlist with fields username varchar(10)
now i want to change it to username varchar(30)
without dropping or recreating the table.
how do i do it?
tina
On Wed, 5 Dec 2001, tinar wrote: > i have created a table > userlist with fields username varchar(10) > now i want to change it to username varchar(30) > without dropping or recreating the table. > how do i do it? The best way is to recreate the table and rename them around. If you *REALLY* don't want to do that and have a recent backup (yes, I'm serious), you can muck with pg_attribute and change atttypmod for the attribute in question (from 14 to 34).
What's the essential problem with changing column types in postgres? Is it similar to the DROP COLUMN problem? If the answer is that the table format only has allocated enough space per row for the existing type, then how is it possible that Stephen's hack below will not break things? Chris > -----Original Message----- > From: pgsql-sql-owner@postgresql.org > [mailto:pgsql-sql-owner@postgresql.org]On Behalf Of Stephan Szabo > Sent: Friday, 7 December 2001 12:31 AM > To: tinar > Cc: pgsql-sql@postgresql.org > Subject: Re: [SQL] how to chane the type > > > > On Wed, 5 Dec 2001, tinar wrote: > > > i have created a table > > userlist with fields username varchar(10) > > now i want to change it to username varchar(30) > > without dropping or recreating the table. > > how do i do it? > > The best way is to recreate the table and rename > them around. If you *REALLY* don't want to do > that and have a recent backup (yes, I'm serious), > you can muck with pg_attribute and change > atttypmod for the attribute in question > (from 14 to 34). > > > > ---------------------------(end of broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) >
On Fri, 7 Dec 2001, Christopher Kings-Lynne wrote: > What's the essential problem with changing column types in postgres? Is it > similar to the DROP COLUMN problem? > > If the answer is that the table format only has allocated enough space per > row for the existing type, then how is it possible that Stephen's hack below > will not break things? The hack below only works to change the max length of variable length attributes and only upward. I'd be very wary of trying to change the real type of a value except between ones that are bitwise compatible (like I think varchar and text are technically, but I'm not sure). > > The best way is to recreate the table and rename > > them around. If you *REALLY* don't want to do > > that and have a recent backup (yes, I'm serious), > > you can muck with pg_attribute and change > > atttypmod for the attribute in question > > (from 14 to 34).