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

Se puede cambiar el orden de las columna en postgres?

Estas en el tema de Se puede cambiar el orden de las columna en postgres? en el foro de PostgreSQL en Foros del Web. hola quisiera saber si hay alguna forma de cambiar el orden de las columnas en postgres como se hace en mysql? saludos...
  #1 (permalink)  
Antiguo 27/04/2011, 15:28
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Se puede cambiar el orden de las columna en postgres?

hola quisiera saber si hay alguna forma de cambiar el orden de las columnas en postgres como se hace en mysql?


saludos
  #2 (permalink)  
Antiguo 27/04/2011, 15:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Se puede cambiar el orden de las columna en postgres?

No rivermillos.
Debes reconstruir la tabla.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 27/04/2011, 15:37
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Se puede cambiar el orden de las columna en postgres?

y en caso de que la tabla ta tenga datos que se deberia hacer?

saludos
  #4 (permalink)  
Antiguo 27/04/2011, 15:39
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Se puede cambiar el orden de las columna en postgres?

Te puedes crear una temporal para pasar los datos.

CREATE TABLE nueva_tabla_temporal AS SELECT campos FROM tabla_vieja;

los campos deben ir en el orden que los quieres.

Cuando los datos estén seguros, puedes borrar la tabla vieja, reconstruirla con el orden correcto y posteriormente volver a llenarla.

INSERT INTO nueva_tabla SELECT *FROM nueva_tabla_temporal;

después borras la tabla temporal
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 27/04/2011, 16:01
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Se puede cambiar el orden de las columna en postgres?

Muchas gracias por la respues me sirvio mucho , pero con todo esto me surgio otra duda y no quiere crear otro tema pues creo que es boba, tengo un campo id que es integer y veo que no se puede convertir a serial pero le quiero colocar este valor nextval('newsequence'::regclass)
para que simule el serial y me sale esto "no existe la relacion newsequence" a que se debe esto?

saludos
  #6 (permalink)  
Antiguo 27/04/2011, 16:05
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Se puede cambiar el orden de las columna en postgres?

Rivermillos...
Serial no es un tipo de campo. Simplemente es un integer que lleva por defecto una secuencia.

Mira la explicación en el manual de referencia
Cita:
The data types serial and bigserial are not true types, but merely a notational convenience for setting up unique identifier columns (similar to the AUTO_INCREMENT property supported by some other databases). In the current implementation, specifying

CREATE TABLE tablename (
colname SERIAL
);
is equivalent to specifying:

CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL
);
Thus, we have created an integer column and arranged for its default values to be assigned from a sequence generator. A NOT NULL constraint is applied to ensure that a null value cannot be explicitly inserted, either. In most cases you would also want to attach a UNIQUE or PRIMARY KEY constraint to prevent duplicate values from being inserted by accident, but this is not automatic.
Por lo que para hacer lo que buscas, primero tendrías que crear newsequence como objeto secuencia.

se entiende?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 28/04/2011, 07:26
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Se puede cambiar el orden de las columna en postgres?

Lo del tipo de datos lo entendi pero lo de crear el objeto no mucho...a que te refieres ?


saludos
  #8 (permalink)  
Antiguo 28/04/2011, 07:37
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Se puede cambiar el orden de las columna en postgres?

Una secuencia es un objeto de la base de datos que es el encargado de incrementar automaticamente frente a la acción de una tabla.

Cuando creas un serial, implicitamente está creando una secuencia y poniendola como valor por defecto en la tabla.
Esto:
CREATE TABLE tablename (
colname SERIAL
);

Es exactamente igual a esto:
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL
);


cuando te dice que no existe la relación newsequence es por que no has creado el objeto.

MIra la seguidilla de esto:

Código SQL:
Ver original
  1. pruebas=> CREATE TABLE prueba_sequence(id INTEGER, nombre TEXT);
  2. CREATE TABLE
  3. pruebas=> \d prueba_sequence
  4. Tabla ½public.prueba_sequence╗
  5.  Columna |  Tipo   | Modificadores
  6. ---------+---------+---------------
  7.  id      | INTEGER |
  8.  nombre  | text    |
  9.  
  10.  
  11. pruebas=> ALTER TABLE prueba_sequence ALTER COLUMN id SET DEFAULT NEXTVAL('newsequence'::regclass);
  12. ERROR:  no existe la relación «newsequence»
  13. pruebas=> CREATE SEQUENCE newsequence;
  14. CREATE SEQUENCE
  15. pruebas=> ALTER TABLE prueba_sequence ALTER COLUMN id SET DEFAULT NEXTVAL('newsequence'::regclass);
  16. ALTER TABLE
  17. pruebas=> \d prueba_sequence
  18.                  Tabla ½public.prueba_sequence╗
  19.  Columna |  Tipo   |                   Modificadores
  20. ---------+---------+---------------------------------------------------
  21.  id      | INTEGER | valor por omisin NEXTVAL('newsequence'::regclass)
  22.  nombre  | text    |
  23.  
  24.  
  25. pruebas=>
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 28/04/2011, 07:41
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Se puede cambiar el orden de las columna en postgres?

ok muchas gracias ahora si entendi voy a hacer la pruebas.


saludos

Etiquetas: columna, orden, postgres
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 21:52.