Ver Mensaje Individual
  #4 (permalink)  
Antiguo 10/10/2010, 18:26
Avatar de nekcab
nekcab
 
Fecha de Ingreso: noviembre-2004
Mensajes: 223
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Insertar nueva columna entre 2 ya existentes

Respondo pasado tanto tiempo pq así dejo continuidad a la resolución del problema planteado hace un año:

No sé si es pq hace un año se trataba de un par de versiones anteriores, pero con la actual 8.4.4 si se puede:
- crear una segunda tabla
- copiar aquellas columnas de la tabla original en la nueva, independientemente de que fueran o no consecutivas.

Solo se exige:
A) que sean del mismo tipo/tamaño/....
B) que en la orden: la secuencia de campos en tabla origen, sea igual que en la tabla destino (independientemente, como digo, de que te saltes alguna, con que corresponda en ambos "extremos"..., vale)

Tabla Origen:
Cita:
musica=# \d titulos;
Tabla ½public.titulos╗
. . . Columna . . . | . . . . . . . Tipo . . . . . . . | Modificadores
-------------+------------------+-----------
track . . . . . . . . . | numeric(2,0) . . . . . . . |
duration . . . . . . | character varying(9) . . |
comment . . . . . | character varying(300) |
bitrate . . . . . . . | numeric(4,0) . . . . . . . |
title . . . . . . . . . | character varying(150) |
artist . . . . . . . . | character varying(100) |
album . . . . . . . . | character varying(90) |
year . . . . . . . . . .| numeric . . . . . . . . . . . |
genre . . . . . . . . | character varying(100) |
seconds . . . . . . . | numeric(4,0) . . . . . . . |
size . . . . . . . . . . | numeric(5,2) . . . . . . . |
codec . . . . . . . . | character varying(4) . . |
taste_track . . . . | character varying(300) |
dvd . . . . . . . . . . | character varying(70) . . |
Tabla destino:
Cita:
musica=# \d titulos2;
Tabla ½public.titulos2╗
. . . Columna . . . | . . . . . . . .Tipo . . . . . . | Modificadores
-------------+-----------------+-------------
track . . . . . . . . | numeric(2,0) . . . . . . . |
duration . . . . . . | character varying(9) . . |
comment . . . . . | character varying(300) |
bitrate . . . . . . . | numeric(4,0) . . . . . . . |
title . . . . . . . . . | character varying(150) |
artist . . . . . . . . | character varying(100) |
album . . . . . . . | character varying(90) . |
year . . . . . . . . . | numeric . . . . . . . . . . . |
genre . . . . . . . . | character varying(100) |
seconds . . . . . . | numeric(4,0) . . . . . . . |
size . . . . . . . . . | numeric(5,2) . . . . . . . |
codec . . . . . . . . | character varying(4) . . |
composer . . . . . | character varying(100) |
director . . . . . . | character varying(100) |
orchestra . . . . . | character varying(150) |
taste_track . . . . | character varying(300) |
year_edition . . . | numeric(4,0) . . . . . . . |
record_label . . . | character varying(100) |
dvd . . . . . . . . . . | character varying(70) . |
Orden de copia entre ambas:
Cita:
insert into
titulos2(track,duration,comment,bitrate,title,arti st,album,year,genre,seconds,size,codec,dvd)
(select track,duration,comment,bitrate,title,artist,album, year,genre,seconds,size,codec,dvd
from titulos);