Re: Copiar contenido de un serial a otro campo y concatenar campos

From: "Marcos Saldivar" <baron(dot)rojo(dot)cuerdas(dot)de(dot)acero(at)gmail(dot)com>
To: el-PRiNCiPiTo <el-PRiNCiPiTo(at)terra(dot)es>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Copiar contenido de un serial a otro campo y concatenar campos
Date: 2008-03-27 17:05:24
Message-ID: 1c4d91ab0803271005j6c689c83g3968c748b927702c@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 27/03/08, el-PRiNCiPiTo <el-PRiNCiPiTo(at)terra(dot)es> escribió:
> Hola a todos,
> estoy utilizando una base de datos pgsql para almacenar los datos de un
> programa y tengo un par de dudas que supongo serán muy básicas pero
> estoy buscando por internet y no veo ninguna solución que me sirva.
> La primera duda es que tengo una tabla en la que hay un campo id que es
> de tipo serial y necesito añadir otro campo que tenga el mismo valor que
> este serial. Desde el programa tendría que cambiar demasiado código para
> que lo hiciera así que me preguntaba si hay alguna forma de hacer que la
> base de datos inserte el mismo valor que el campo id en el campo nuevo
> cada vez que se cree una fila nueva.

algo como esto:

dberp=# create table foo(id_serie serial, id_serie_copia int);
NOTICE: CREATE TABLE creará una secuencia implícita
«foo_id_serie_seq» para la columna serial «foo.id_serie»
CREATE TABLE
dberp=# alter table foo alter column id_serie_copia set default
currval('foo_id_serie_seq'::regclass);
ALTER TABLE
dberp=# alter table foo alter column id_serie_copia set not null;
ALTER TABLE
dberp=# insert into foo values(default,default);
INSERT 0 1
dberp=# select * from foo;
id_serie | id_serie_copia
----------+----------------
1 | 1
(1 fila)

dberp=# insert into foo values(default,default);
INSERT 0 1
dberp=# select * from foo;
id_serie | id_serie_copia
----------+----------------
1 | 1
2 | 2
(2 filas)

dberp=#

> La otra duda es parecida pero en lugar de copiar un capo serial querría
> que concatenara el valor de tres campos en uno nuevo. También
> necesitaría que esto fuera automático cada vez que se crea una fila
> nueva porque para hacerlo desde el programa tendría que hacer muchas
> modificaciones y puede que me olvidara de algún sitio.
>
> Muchas gracias
>
> --
> TIP 2: puedes desuscribirte de todas las listas simultáneamente
> (envía "unregister TuDirecciónDeCorreo" a majordomo(at)postgresql(dot)org)
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gilberto Castillo Martínez 2008-03-27 17:43:44 Re: Uso table_log
Previous Message Alvaro Herrera 2008-03-27 16:47:41 Re: Error en postgresql 8.3.1 en windows