首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql中用外键连接表之间的数据?

如何在mysql中用外键连接表之间的数据?
EN

Stack Overflow用户
提问于 2020-12-31 10:12:40
回答 1查看 77关注 0票数 0

我有一个资源表,其中包含案例研究、白皮书、网络研讨会等资源。

它与另一个表case_study_blocks.有一对多的关系。因此,case_study_blocks表中有一个外键caseStudyId,它指向资源表中的案例研究。

我希望将所有案例研究移到一个单独的表case_studies,中,但要做到这一点,我还必须更新case_study_blocks表中的外键引用,并使那里的所有记录指向case_study表中新生成的唯一ids。

在保持关系的同时迁移完整数据的正确方法是什么?

我能想到的一个方法是:

将外键约束拖放到case_study_blocks

  • Add的新外键约束到caseStudyId列上,指向case_studies表

  • 中的id列,但现在如何正确地将现有的case_study_blocks映射到case_studies表中的新id?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-31 13:12:44

执行以下步骤:

  • 将相关数据(与案例研究相关)复制到新的case_studies表中,包括原始ID值--可以称为oldCaseStudyId --以便case_studies表将具有新生成的ID (caseStudyId)和单独的oldCaseStudyId列中的原始ID。当一切完成后,可以放弃后者。

case_study_blocks.caseStudyId上的

  • 删除现有的外键约束

  • 通过现在在case_studies中可用的映射执行caseStudyId值的更新(它既有旧的ID值,也有新的ID值)。SQL语句可以如下所示:

更新case_study_blocks内部连接case_studies on case_studies.oldCaseStudyId = case_study_blocks.caseStudyId set case_study_blocks.caseStudyId = case_studies.caseStudyId;

case_study_blocks.caseStudyId

  • 创建替换外键约束

  • 删除resources中与

案例研究相关的原始行

删除列case_study_blocks.oldCaseStudyId

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65519459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档