Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/11/2009, 18:00
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con ALTER TABLE (creo)

hay varias observaciones para hacer:
1) ON UPDATE CASCADE implica que si hay alguna modificación (UPDATE) en la PK de la tabla CATEGORIA, por ejemplo, si hay algún registro en ENTRADA que esté relacionado con uno de la categoría modificada, este se modifique en cascada. El tema pasa porque:
a. Lo único que se actualiza es la PK si esta ha sido modificada.
b. Solamente afecta a aquellos registros existentes en ese momento en ENTRADA que se correspondan con la PK modificada en CATEGORIA. Ninguno más.

2) Las FK tal y como las defines simplemente no pueden existir. Deben estar dándote error al crearla, porque una FK debe corresponder exactamente con la PK original. En el caso que planteas, la PK es compuesta (dos campos), por lo tanto la FK también debe ser compuesta, es decir, deben ser dos campos y no uno, del mismo tipo y en el mismo orden.

3) Un campo autoincremental es por default PK por si mismo. No necesita de otro campo para definirla. La PK definida en CATEGORIA es innecesariamente compleja. No necesita los dos campos, además de que tal como la planteas no impide que se ingresen dos categorías con el mismo nombre... porque tendrán autoincrementales diferentes.
En todo caso lo que tienes que hacer es declarar UNIQUE al nombre, pero no hacerlo parte de la PK; o bien eliminar el autoincremental como PK, porque con el nombre sería suficiente.

Finalmente: No nos estás indicando el tipo de tabla usado. Esto es importante porque si son MyISAM, las MyISAM no soportan restricciones de FK.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 16/11/2009 a las 19:07