Re: Problema con Foreign keys

From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
To: "Pablo E(dot) Siciliano" <psiciliano(at)puentenet(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Problema con Foreign keys
Date: 2005-04-01 21:04:36
Message-ID: 20050401210436.GD15347@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Fri, Apr 01, 2005 at 05:44:00PM -0300, Pablo E. Siciliano wrote:
> Hola a todos.
>
> Estoy teniendo un problema raro con dos tablas, que describo al final. El
> asunto es que cuando hago in insert en orden_pasaje, de dos id_orden que
> estoy seguro que estan en orden, recibo como respuesta:
>
> ERROR: insert or update on table "orden_pasaje" violates foreign key
> constraint "orden_pasaje_id_orden_origen_fkey"
> DETAIL: Key (id_orden_origen)=([id_orden_destino]) is not present in table
> "orden".
>
> ¿Estoy cometiendo algún error con el diseño de las tablas? No se si tendrá
> algo que ver (Sospecho que no), pero orden es heredada por varias tablas.

Las llaves foraneas no funcionan bien con herencia; los registros que
estan en tablas "heredadas" no son visibles desde la tabla con la llave
foranea.

Una solucion es no usar herencia. Otra es mantener las llaves aparte,
en una tabla auxiliar, que agrupe todo lo que viene de la jerarquia de
herencia, y hacer que las llaves foraneas apunten alli. Para mi gusto
la 1era solucion es mas limpia.

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"Aprender sin pensar es inútil; pensar sin aprender, peligroso" (Confucio)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Martín Marqués 2005-04-01 21:12:26 Re: Backup Incremental
Previous Message Martín Marqués 2005-04-01 21:00:21 Re: Backup Incremental