El día 22 de marzo de 2011 13:28, Guillermo Villanueva <guillermo...@gmail.com> 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 (pgsql-es-ayuda@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda