Tengo el siguiente script.
Código MySQL:
Ver original
/*!40101 SET NAMES utf8 */; /*!40101 SET SQL_MODE=''*/; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; /*Table structure for table `element` */ CONSTRAINT `fk_element_pool1` FOREIGN KEY (`pool_pool_id`, `status`) REFERENCES `pool` (`pool_id`, `status`) ON DELETE NO ACTION ON UPDATE CASCADE /*Data for the table `element` */ /*Table structure for table `flowchart` */ CONSTRAINT `fk_flowchart_process1` FOREIGN KEY (`process_process_id`, `status`) REFERENCES `process` (`process_id`, `status`) ON DELETE NO ACTION ON UPDATE CASCADE /*Data for the table `flowchart` */ /*Table structure for table `lane` */ CONSTRAINT `fk_lane_pool` FOREIGN KEY (`pool_pool_id`, `status`) REFERENCES `pool` (`pool_id`, `status`) ON DELETE NO ACTION ON UPDATE CASCADE /*Data for the table `lane` */ /*Table structure for table `pool` */ /*Data for the table `pool` */ /*Table structure for table `process` */ /*Data for the table `process` */ /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
Es una bd con 3 tablas relacionadas entre si
Lane<---Pool--->Element
Mi objetivo es implementar el UPDATE CASCADE, así cuando updateo el status=0 de Pool
el status de Lane y Element también sea 0. Hasta aquí todo bien, el problema es cuando quiero actualizar el status del Lane o del Element sin tener que actualizar el status de Pool. Me salta el siguiente error
Código MySQL:
Ver original
Error Code: 1452 Cannot add or update a child row: a foreign key constraint fails (`cascadeupdate`.`lane`, CONSTRAINT `fk_lane_pool` FOREIGN KEY (`pool_pool_id`, `status`) REFERENCES `pool` (`pool_id`, `status`) ON DELETE NO ACTION ON UPDATE CASCADE)
Obviamente el error se da por la llave compuesta (`pool_id`, `status`)...
Cómo puedo arreglar esto? Para poder hacer status = 0 a Element o Lane pero sin perder el UPDATE CASCADE que tienen con Pool
Gracias