Re: Algo no defini bien ? o fallo FK

From: Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com>
To: Jaime Casanova <systemguards(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Algo no defini bien ? o fallo FK
Date: 2007-12-31 02:07:28
Message-ID: 576337.68616.qm@web63706.mail.re1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


--- Jaime Casanova <systemguards(at)gmail(dot)com> escribió:

> On Dec 29, 2007 10:32 PM, Gabriel Hermes Colina
> Zambra
> <hermeszambra(at)yahoo(dot)com> wrote:
> > CONSTRAINT "documentos_id_cab_fkey" FOREIGN KEY
> > ("id_cab")
> > REFERENCES "central"."cabezales"("id_cab")
> > MATCH FULL
> > ON DELETE CASCADE
> > ON UPDATE CASCADE
> > NOT DEFERRABLE,
> >
> >
> > En esta situacion encontre que en cabezales no
> estaba
> > el registro a los que hacia referencia la tabla
> > central_documentos que tiene la llave foranea
> > apuntando a central.cabezales, los 14 registros
> tenian
> > el id_cab nulos, y pertenecian todos a una fecha
> dada,
> > lo descubri pasando un backup de fedora a un
> windows y
> > pense que podria estar el problema en el
> postgresql de
> > windows, pero al fijarme en el postgresql de
> fedora me
> > encontre con la misma realidad, no habia ningun
> > registro en cabezales con id_cab=null y en
> documentos
> > estaban los mismos 14 registros.
> >
>
> de lo que entendi es que en el detalle tienes
> registros con valor NULL
> cuando esperabas que fuera un id de la cabecera, lo
> que paso es que
> debiste declarar la columna como NOT NULL. De lo
> contrario el valor
> NULL se puede asignar libremente para indicar que no
> hay cabecera...

Eso fue lo que me falto en la base de mi cliente en la
tabla de lineas, seguro.

> eso es intencional y, si mal no recuerdo, se
> conforma al estándar
> SQL... a parte de que tiene sus usos...

Bueno eso me tranquiliza, no es un error, solo algo
que yo ignoraba y pensandolo bien tiene mucho sentido
e incluso ya se me ocurre algo en que puede aplicar.

>
> prueba=# create table t1_cab (i int primary key);
> NOTICE: CREATE TABLE / PRIMARY KEY will create
> implicit index "t1_cab_pkey" for
> table "t1_cab"
> CREATE TABLE
> prueba=# insert into t1_cab select
> generate_series(1, 10);
> INSERT 0 10
> prueba=# create table t1_det1 (i int references
> t1_cab(i));
> CREATE TABLE
> prueba=# insert into t1_det1 values (1);
> INSERT 0 1
> prueba=# insert into t1_det1 values (null);
> INSERT 0 1
> prueba=# create table t1_det2 (i int not null
> references t1_cab(i));
> CREATE TABLE
> prueba=# insert into t1_det2 values (1);
> INSERT 0 1
> prueba=# insert into t1_det2 values (null);
> ERROR: null value in column "i" violates not-null
> constraint
> prueba=#
Bien para ese caso si necesito el not null, ahora ya
me estoy planteando poder jugar con la otra
posibilidad, de incluir ciertas lineas que esperen por
una cabecera por ahora no definida, para otra
aplicacion.

>
>
> --
> Atentamente,
> Jaime Casanova
>
> "Programming today is a race between software
> engineers striving to
> build bigger and better idiot-proof programs and the
> universe trying
> to produce bigger and better idiots.
> So far, the universe is winning."
> Richard Cook
>
Gracias Jaime por tu aporte.

____________________________________________________________________________________
¡Capacidad ilimitada de almacenamiento en tu correo!
No te preocupes más por el espacio de tu cuenta con Correo Yahoo!:
http://correo.espanol.yahoo.com/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Arturo Munive 2007-12-31 13:34:38 Re: Vistas Materializadas Vs, Vistas Comunes
Previous Message Gabriel Hermes Colina Zambra 2007-12-31 02:01:56 Re: Algo no defini bien ? o fallo FK