Re: Algo no defini bien ? o fallo FK

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Algo no defini bien ? o fallo FK
Date: 2007-12-31 01:41:07
Message-ID: 20071231014107.GC9886@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gabriel Hermes Colina Zambra escribió:
> 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,

Las llaves foraneas no implican NOT NULL. Debes declarar tus columnas
como NOT NULL. MATCH FULL permite que los campos de la llave foranea
sean todos nulos, en cuyo caso no es obligatorio que haya un registro en
la tabla referenciada que tenga nulas las columnas referenciadas:

MATCH FULL will not allow one column of a multicolumn foreign
key to be null unless all foreign key columns are null.
http://www.postgresql.org/docs/8.2/static/sql-createtable.html

Si agregas NOT NULL, esto deja de ser un problema.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Hermes Colina Zambra 2007-12-31 01:57:17 Re: Depurar Funciones step to step.
Previous Message Alvaro Herrera 2007-12-31 01:25:16 Re: problema con tildes