[Pgsql-ayuda] Cambio de tipo char a varchar

Guillermo Schulman guillepsql@hotmail.com
Tue, 05 Aug 2003 18:26:43 +0000


Es posible el mismo tipo de solución para cambiar de un numeric(6,2) a un 
numeric(8,2) ?
Gracias.


>From: Alvaro Herrera <alvherre@dcc.uchile.cl>
>To: "Alfonso Andaur L." <postgresql@creasoluciones.cl>
>CC: pgsql-ayuda@tlali.iztacala.unam.mx
>Subject: Re: [Pgsql-ayuda] Cambio de tipo char a varchar
>Date: Mon, 4 Aug 2003 21:06:50 -0400
>
>On Mon, Aug 04, 2003 at 04:28:25PM -0400, Alfonso Andaur L. wrote:
> > > Buenas ante todo quisiera saber si existe alguna manera de cambiar un
> > > tipo de un campo, es decir, tengi un campo codigo que esta declarado
> > > como char pero lo que deseo es que este sea varchar.
>
> > 2. cambiando en nombre de tu campo a cualquier cosa (por ejemplo 
>"basura") y
> > luego crear el campo nuevamente pero según la definición correcta.
>
>O botando el campo... (sólo en 7.3):
>ALTER TABLE tabla DROP COLUMN columna-antigua
>
>(pero naturalmente antes de eso se debe crear la nueva columna y copiar
>los datos de una a otra).
>
>
>En realidad hay otro mecanismo, más peligroso pero más sencillo:
>
>alvh=# CREATE TABLE test (a char(25));
>CREATE TABLE
>alvh=# \d test
>         Table "public.test"
>  Column |     Type      | Modifiers
>--------+---------------+-----------
>  a      | character(25) |
>
>alvh=# BEGIN;
>BEGIN
>alvh=# UPDATE pg_attribute SET atttypid='varchar'::regtype
>        WHERE attrelid='test'::regclass AND attname='a';
>UPDATE 1
>alvh=# \d test
>             Table "public.test"
>  Column |         Type          | Modifiers
>--------+-----------------------+-----------
>  a      | character varying(25) |
>
>alvh=# UPDATE test SET a=a;
>UPDATE
>alvh=# SELECT a FROM test;		-- verificar que los datos
>					-- estan OK
>alvh=# COMMIT;
>COMMIT
>alvh=# VACUUM FULL test;
>VACUUM
>
>Hay que ser cuidadoso con no hacer estas cosas fuera de una transacción,
>y no hacer COMMIT hasta no estar bien seguro de que el resultado es
>correcto!! (i.e. si pierdes datos la culpa es tuya).
>
>Mucho ojo, esto solo funciona con algunos tipos de datos, es decir no
>trates de pasar una columna INTEGER a TEXT ni cosas similares.
>
>--
>Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
>"Cuando mañana llegue pelearemos segun lo que mañana exija" (Mowgli)
>_______________________________________________
>Pgsql-ayuda mailing list
>Pgsql-ayuda@tlali.iztacala.unam.mx
>http://tlali.iztacala.unam.mx/mailman/listinfo/pgsql-ayuda

_________________________________________________________________
Charla con tus amigos en línea mediante MSN Messenger: 
http://messenger.yupimsn.com/