Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/03/2012, 05:40
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Problema con claves foráneas

Código MySQL:
Ver original
  1. CREATE TABLE ejemplares(
  2. isbn varchar(17),
  3. ejemplar varchar(3),
  4. titulo varchar(50),
  5. cod_autor varchar(40),
  6. tema varchar(40),
  7. cdu varchar(20),
  8. nom_editorial varchar(40),
  9. pasillo varchar(1),
  10. estanteria varchar(2),
  11. constraint primary key(isbn,ejemplar),
  12. constraint foreign key(pasillo,estanteria) references ubicacion(pasillo,estanteria) on delete cascade on update cascade;

Intenta esto.

El problema puede ser que algun valor que contiene pasillo en ejemplares no este en ubicaciones.

Pero en qualquier caso te interesa la clave foranea compuesta puesto que lo que no puede haber en ejemplares es un par pasillo/estanteria que no exista en ubicaciones. Si controlas por separado puede que estes guardando un ejemplar en un pasillo que exista y en una estanteria que tambien exista pero en otro pasillo.

Otra posibilidad para no trabajar con claves compuestas es agregar un id autoincremental como pk de ubicaciones y un indice unico compuesto por pasillo/estanteria y luego en ejemplares vincular por el id.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.