ERROR: Cannot insert a duplicate key in to unique index

From: "Alberto S(dot) García R(dot)" <agarcia(at)estafeta(dot)com(dot)mx>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: ERROR: Cannot insert a duplicate key in to unique index
Date: 2004-05-11 16:47:56
Message-ID: 40A103BC.1030600@estafeta.com.mx
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alvaro Herrera wrote:

> On Wed, May 05, 2004 at 07:21:07PM -0500, "Alberto S. García R." wrote:
>
>> Alvaro,
>> Solicito de tu ayuda.
>> Estoy tratando de Insertar registros unicos en una tabla
>> (pendientes) con el siguiente query, pero al ejecutar dicho query,
>> manda el siguiente
>> error: ERROR: Cannot insert a duplicate key in to unique index
>> code_guia.
>
>
>
> Hola,
>
> Si la idea es no insertar aquellos registros que ya estan presentes en
> la tabla pendientes, me imagino que podrias incluir en la clausula WHERE
> una condicion como (guias.idguia NOT IN (SELECT idguia FROM pendientes))

Aun sigue enviando el mensaje de ERROR:
ERROR: Cannot insert a duplicate key in to unique indexcode_guia
Y no inserta ningun registro.

>
> Esto fallaria si llegara a ejecutarse esa consulta dos veces
> simultaneamente, creo (es decir, una de ellas fallaria, la otra se
> completaria con exito).

>
> Lo que no me queda muy claro es por que tienes que crear una tabla con
> esta informacion separada. Me parece que seria mucho mejor hacer una
> vista:

Realmente tengo 2 tablas:

1.- Tabla movimientos (muchos registros esta por idguia)--> Donde guardo
el historial de un envio, es decir voy guardando el registro del envio
que se escanea por cada punto(ciudad) que va pasando hasta llegar a su
destino.

2.- Tabla confirma (registro unico, esta por idguia)--> es donde
inserto el registro de entrega final del envio, es decir que el envio o
paquete fue entregado al domicilio del cliente.

Por ello que haciendo un outer join todo lo que no este en la Tabla
confirma esta pendiente por entregar, pero solo necesito el ultimo
registro del envio de la tabla movimientos.

mensajeria=# \d movimientos;
Table "movimientos"
Column | Type | Modifiers
------------------+-----------------------------+-----------
idguia | character varying(15) | not null
tiregistro | character varying(2) | not null
exclave | character varying(3) |
plsiglasplaza | character varying(3) |
ceorigenregistro | character varying(5) |
ruta | character varying(7) |
fechaevento | timestamp without time zone | not null
Unique keys: xmovimientos1

mensajeria=# \d confirma
Table "confirma"
Column | Type | Modifiers
------------------+-----------------------------+-----------
idguia | character varying(15) | not null
plsiglasplaza | character varying(3) |
ceorigenregistro | character varying(5) |
ruta | character varying(7) |
cofecha | timestamp without time zone |
conombre | character varying(40) |
Unique keys: xconfirma1

>
> CREATE VIEW pendientes AS SELECT guias.idguia,
> substring(guias.idguia,1,4),
> movimientos.Ruta,
> movimientos.ExClave,
> movimientos.FechaEvento
> FROM movimientos, guias
> WHERE guias.idguia=movimientos.idguia;

Tampoco funciono sigue enviando el error:
ERROR: Cannot insert a duplicate key in to unique indexcode_guia

>
> De este modo consultar "pendientes" te entregaria informacion
> actualizada en todo momento.
>
> Suerte,
>
--

Alberto S. García Ruíz
Sistemas Corporativo Estafeta
Tel. 52-42-91-00 Ext. 9214

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Estéfano Castillo 2004-05-11 22:20:23 Manejo de Fechas en Postgresql
Previous Message Alvaro Herrera 2004-05-11 14:18:20 Re: ERROR: Cannot insert a duplicate key in to unique index code_guia.