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)
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 |