mysql表的一个字段是其他3个表的外键,insert报1452错误?求解?

周口店的程序猿 2011-01-28 11:56:16
举例说明下问题
有三个数据表 news,softs,games
因为都有上传多个附件的需求
我把他们的附件信息统一放在了附件表里 uploadfiles
updatefiles表里分别有三个字段 id,data_id,data_type,....其他字段省略
其中data_id是三个数据表的外键,当然我设置了外键约束
现在我一个news表里添加了一条数据,并上传了文件,准备insert到uploadfiles表的时候报错,错误信息如下
[Err] 1452 - Cannot add or update a child row: a foreign key constraint fails ....
错误原因应该是softs和games两个父表没有对应的记录,所以报错,请问这种情况大家怎么处理的?
难道要建立三个对应的uploads表?



...全文
270 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
其实我想用级联删除,那我只能用程序控制,写代码的时候小心严谨一点了
ACMAIN_CHM 2011-01-28
  • 打赏
  • 举报
回复
这种情况下,根本不使用外键。
你完全可以通过程序来实现uploadfiles这个data_id的控制,这样就不需要依靠外键来约束。

或者想一下,你想利用外键实现什么?
小小小小周 2011-01-28
  • 打赏
  • 举报
回复
每个ID 对应其他表相应的ID,没冗余吧.不然你就1个字段对应3个表的字段(就出现你这个情况了)
  • 打赏
  • 举报
回复
那不是冗余了吗
小小小小周 2011-01-28
  • 打赏
  • 举报
回复
为什么不建立3个字段,来对应外面的3个表呢?
ACMAIN_CHM 2011-01-28
  • 打赏
  • 举报
回复
[Quote]其实我想用级联删除,那我只能用程序控制,写代码的时候小心严谨一点了[/Quote]
用触发器实现就行了。

56,803

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧