Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

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: Thu, 27 Mar 2008 14:05:24 -0300
  • Message-id: <1c4d91ab0803271005j6c689c83g3968c748b927702c(at)mail(dot)gmail(dot)com>

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)
>



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group