[Pgsql-ayuda] problemas con foreign key

Martín Marqués martin@bugs.unl.edu.ar
Sat, 31 Jan 2004 13:53:17 -0300


El Vie 30 Ene 2004 20:51, Alvaro Herrera escribió:
> On Fri, Jan 30, 2004 at 06:06:26PM +0000, nuria montoya rodriguez wrote:
> 
> > CREATE TABLE table_name(
> > ...
> > CONSTRAINT constraint_name FOREIGN KEY(campo1,campo2) REFERENCES 
> > ref_table(ref_campo1,ref_campo2));
> > *campo1 y campo2 son las únicas claves primarias de esta tabla.
> > *ref_campo1 y ref_campo2 son claves primarias de ref_table, pero hay ot=
ra 
> > más en está tabla(ref_table)
> > 
> > ERROR: UNIQUE constraint matching give keys for referenced table 
> > "ref_table" not found.
> 
> A ver ... el ref_table tienes UNIQUE ref_campo1 y UNIQUE ref_campo2?
> Si ese es el caso, no se puede.  Lo que necesitas es
> UNIQUE (ref_campo1, ref_campo2).

Si queremos ponernos en exquisitos, deberiamos hacer algo como:

PRIMARY KEY (ref_campo1, ref_campo2)

Mantiene la unicidad del par de campos, y no permite que ninguno de los campos 
de la llave primaria tomen el valor nulo (NULL).

-- 
select 'mmarques' || '@' || 'unl.edu.ar' AS email;
---------------------------------------------------------
Martín Marqués          |   Programador, DBA
Centro de Telemática	|     Administrador
               Universidad Nacional
                    del Litoral
---------------------------------------------------------