mysql - 第一次体验外键,我做错了什么?

标签 mysql phpmyadmin

有人暗示我尝试使用外键,因为我正在努力提高数据库编程水平。问题是,如果删除了 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/

相关文章:

mysql - where not in Rails 3 是如何工作的

php - 列出月份下的所有记录,以月份为表格行

import - 通过phpMyAdmin导入到mySQL时如何忽略id列?

sql - 在 MySQL View 中使用派生表达式

mysql - 如何使 MySQL 选择树结构?

mysql - Liquibase Hibernate diff 异常

magento - 修改客人订单电子邮件地址

php - 定期制作 Live MySQL 数据库的副本

php - MySQL 和 PhpMyAdmin : Undefined index: Rows

linux - 打开XAMPP的phpmyadmin时出现错误500