有人暗示我尝试使用外键,因为我正在努力提高数据库编程水平。问题是,如果删除了 jobs 表中的作业,它会在 messages 表中留下与其相关的孤立消息。因此向我介绍了外键作为解决方案。
但是,我在尝试这样做时遇到了这个问题,但我不确定它在说什么,另外,我什至不确定我应该以哪种方式设置限制,从工作到消息, 或相反亦然。 :(
这是错误:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`nzua9c8_tasks`.<result 2 when explaining filename '#sql-2929_701930'>, CONSTRAINT `#sql-2929_701930_ibfk_1` FOREIGN KEY (`id`) REFERENCES `jobs` (`id`) ON UPDATE NO ACTION)
此外,PHPMyAdmin 的界面建议当我删除任务时,消息 ID 将被“限制”。我没有删除选项。我也希望删除任何具有与工作表中的 ID 相匹配的“job_id”的消息。
感谢您提供的任何帮助。
最佳答案
您想将 on delete cascade
添加到您的外键定义中(就在脚本中的 on update no action
之后)。
所以它会是这样的:
alter table messages add foreign key (id) references jobs (id) on delete cascade
更多可以找到here .
关于mysql - 第一次体验外键,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8806287/