【发布时间】:2020-01-26 15:58:17
【问题描述】:
我有两个表(父、子)。
表格包含如下数据
测试(儿童) 类型版本 -------- -------- 宝马M3 奥迪RS6 奔驰S500 奥迪RS4 宝马M3 奥迪RS6 测试2(父) 类型版本(类型和版本是组合的唯一键) -------- -------- 奥迪RS4 奥迪RS6 奔驰S500 宝马M3 外键 更改表测试 添加约束 fk_test 外键(版本)参考 test2(版本);我可以将数据添加到“子”表中,该表使用“子”表上的 BEFORE INSERT TRIGGER 在“父”表中创建一个唯一条目。 (INSERT INTO parent ... ON DUPLICATE KEY...)
我想要做的是通过更新父表(仅版本列),子表中的所有相应条目也应该更新。
例如通过将“父”表中的 RS6 更改为 RS5,我想在子表中看到以下更改。
类型版本 -------- -------- 宝马M3 奥迪RS5 奔驰S500 奥迪RS4 宝马M3 奥迪RS5但如果我更新父表中的“版本”字段,我会收到此错误。
#1452 - 无法添加或更新子行:外键约束失败 (`table`.`test`, CONSTRAINT `fk_test` FOREIGN KEY (`version`) REFERENCES `test2` (`version`) ON UPDATE级联)
我什至在子表中添加了一个 BEFORE UPDATE 触发器(与插入之前相同)
我想我做错了,但是有没有办法用外键或类似的解决方案来做到这一点?
【问题讨论】:
标签: mysql foreign-keys