From: | Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com> |
---|---|
To: | Guillermo Villanueva <guillermovil(at)gmail(dot)com> |
Cc: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: insert con serial |
Date: | 2011-03-22 16:49:14 |
Message-ID: | AANLkTikDAKFae5R3sTJcvebtvOCKqu+=udJV6g+3D3s_@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Has primero
select * from facturacion.nomenclador where id_nomenclador_detalle =
curval('sequencia_id_nomenclador') +1
Fijate que el nombre de la secuencia lo tienes que cambiar por la que
te asigno postgres.
El día 22 de marzo de 2011 15:04, Guillermo Villanueva
<guillermovil(at)gmail(dot)com> escribió:
> Que raro amigos, me da clave duplicada, les mando los datos exactos (tablas
> reales), por si tienen tiempo para ayudarme:
> CREATE TABLE facturacion.nomenclador
> (
> id_nomenclador serial NOT NULL,
> codigo text,
> grupo text,
> subgrupo text,
> descripcion text,
> precio numeric(30,6),
> tipo_nomenclador text,
> id_nomenclador_detalle integer,
> CONSTRAINT nomenclador_pkey PRIMARY KEY (id_nomenclador),
> CONSTRAINT nomenclador_id_nomenclador_detalle_fkey FOREIGN KEY
> (id_nomenclador_detalle)
> REFERENCES facturacion.nomenclador_detalle (id_nomenclador_detalle)
> MATCH SIMPLE
> ON UPDATE RESTRICT ON DELETE RESTRICT
> )
>
> -- tengo muchos datos en nomenclador con id_nomenclador_detalle = 3
> -- entonces hago lo siguiente para armar el nomenclador 5
> INSERT INTO facturacion.nomenclador(
> codigo, grupo, subgrupo, descripcion, precio,
> tipo_nomenclador, id_nomenclador_detalle)
> SELECT codigo, grupo, subgrupo, descripcion, precio,
> tipo_nomenclador, 5
> FROM facturacion.nomenclador
> where id_nomenclador_detalle = 3
> -- y me da el siguiente error
> -- ERROR: duplicate key value violates unique constraint "nomenclador_pkey"
>
> Saludos
>
> ~~~~~~~~~~~~~~~~
> Guillermo Villanueva
>
>
> El 22 de marzo de 2011 09:46, Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
> escribió:
>>
>> El día 22 de marzo de 2011 13:28, Guillermo Villanueva
>> <guillermovil(at)gmail(dot)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
>
>
--
--
Emanuel Calvo
Helpame.com
From | Date | Subject | |
---|---|---|---|
Next Message | Emanuel Calvo Franco | 2011-03-22 17:31:38 | Re: insert con serial |
Previous Message | Gilberto Castillo Martínez | 2011-03-22 14:14:34 | Re: insert con serial |