Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Insertar nueva columna entre 2 ya existentes

Estas en el tema de Insertar nueva columna entre 2 ya existentes en el foro de PostgreSQL en Foros del Web. Buenas foro: Leyendo el manual que viene incluído en la carpeta de Postgre, y googleando no consigo el comando que me permita: -Insertar una nueva ...
  #1 (permalink)  
Antiguo 06/09/2009, 13:48
Avatar de nekcab  
Fecha de Ingreso: noviembre-2004
Mensajes: 223
Antigüedad: 20 años
Puntos: 0
Insertar nueva columna entre 2 ya existentes

Buenas foro:

Leyendo el manual que viene incluído en la carpeta de Postgre, y googleando no consigo el comando que me permita:
-Insertar una nueva columna
-entre otras 2 ya existentes

ALTER TABLE $table ADD COLUMN $column $tipo ....


¿Se puede hacer?.

y la pregunta definitiva: ¿como?. Muchas gracias.
  #2 (permalink)  
Antiguo 06/09/2009, 20:31
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Insertar nueva columna entre 2 ya existentes

mira esto
http://wiki.postgresql.org/wiki/Alter_column_position

parece que n o se puede directamente con un comando.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 10/09/2009, 17:00
Avatar de nekcab  
Fecha de Ingreso: noviembre-2004
Mensajes: 223
Antigüedad: 20 años
Puntos: 0
Respuesta: Insertar nueva columna entre 2 ya existentes

No, si no me había hecho a la idea de una solución sencilla, .... por suerte. Incluso el enlace que pones da hasta 2 posibilidades, vaya lujo. Muchas gracias.

Me pondré con ello y a ver que tal. Me ha venido bien pq así conozco la orden para copiar de golpe todos los registros de una tabla a otra.

EDITO: vaya full, de momento el "truco" de crear nueva tabla y pasar de golpe los datos, SOLO es válido, si lo único que se produce es una intercalación de 2 campos:
-del mismo tipo
-y que en todo momento ambas tablas tengan la misma estructura (en cuanto a la sucesión de los distintos tipos de campos se refiere).

Probaré con el 2º método: ir creando/copiando/borrando columnas en la misma tabla, forzándose el orden deseado (un tetris en toda regla, vamos)

Última edición por nekcab; 11/09/2009 a las 02:27
  #4 (permalink)  
Antiguo 10/10/2010, 18:26
Avatar de nekcab  
Fecha de Ingreso: noviembre-2004
Mensajes: 223
Antigüedad: 20 años
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);
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:03.