El día 22 de marzo de 2011 13:28, Guillermo Villanueva
<[email protected]> escribió:
> Buenas, tengo una tabla donde la pk es un serial
> supongamos
> CREATE TABLE t1
> (
> campo1 serial NOT NULL,
> campo2 varchar(20),
> campo3 integer,
> CONSTRAINT t1_pkey PRIMARY KEY (campo1),
> )
> y necesito hacer un insert basado en un select sobre datos de la misma
> tabla....
> intenté:
> insert into t1 (campo2,campo3)
> select campo2,5
> from t1
> where
> campo3 =4;
> pero no funcionó, me da clave duplicada
> cómo hago?
> Desde ya muchas gracias
> Saludos
>
He hecho la prueba y no he tenido problemas:
postgres=# CREATE TABLE t1
postgres-# (
postgres(# campo1 serial NOT NULL,
postgres(# campo2 varchar(20),
postgres(# campo3 integer,
postgres(# CONSTRAINT t1_pkey PRIMARY KEY (campo1)
postgres(# );
NOTICE: CREATE TABLE crearA¡ una secuencia implA-cita A«t1_campo1_seqA» para la
columna serial A«t1.campo1A»
NOTICE: CREATE TABLE / PRIMARY KEY crearA¡ el A-ndice implA-cito A«t1_pkeyA» pa
ra la tabla A«t1A»
CREATE TABLE
postgres=#
postgres=# insert into t1 (campo2,campo3)
postgres-# select campo2,5
postgres-# from t1
postgres-# where
postgres-# campo3 =4;
INSERT 0 0
postgres=# insert into t1(campo2,campo3) values ('pg',4);
INSERT 0 1
postgres=# insert into t1(campo2,campo3) values ('p12g',3);
INSERT 0 1
postgres=#
postgres=# insert into t1 (campo2,campo3)
postgres-# select campo2,5
postgres-# from t1
postgres-# where
postgres-# campo3 =4;
INSERT 0 1
postgres=# select * from t1;
campo1 | campo2 | campo3
--------+--------+--------
1 | pg | 4
2 | p12g | 3
3 | pg | 5
(3 filas)
--
--
Emanuel Calvo
Helpame.com
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda