Msql 主表从表 主外键关联

项目场景:

准备整合一个来源的数据,前提是要把表的关联关系整理好,本以为简单的主表从表设置主、外键,没想到期间也出现几个小插曲。总结下来,以防下次再次遇到~

问题描述:

1.主表的主键仍然是id自增,不是业务里面的CPID作为主键。
2.给一批从表中的一张表设置外键时报错。

alter table leads_abnormal_operation add constraint CPID foreign key(CPID) references leads_company_baseinfo(id)
> 1142 - REFERENCES command denied to user 'XXX'@'*.*.*.*' for table 'liuliang.leads_company_baseinfo'
> 时间: 0.012s

3.调整好数据库表结构后,仍然报错,无法正确引用外键。后发现是数据不一致。

> 1216 Cannot add or update a child row:a foreign key constraint fails

原因分析:

问题一:将id字段删除,去除主键设置。将CPID作为主键,not null,添加主键。
问题二:未开通权限,开通references权限,就是设置外键的权限。
问题三:
(1)主表中的id字段数据与从表中的CPID字段数据不一致。首先要保证的是主表里面的id字段的是全的,从表才能进行关联。因为主表id字段的数据缺失,导致从表无法引用主表的主键作为外键。
(2)主要的问题在于,爬数据下来的时候没有根据主外键的逻辑进行爬,导致数据的关联性与准确性有误差。

解决方案:

问题三:因为表多、数据量大,设想的数据备份方案有点费时间。最后好歹有个源数据表,将源数据表与主表的格式进行整合,因为源数据里面的有的字段值是在主表里面没有的,所以将源数据与主表整合后的表成为主表A,原主表为从表B,这样将主表A一对多个从表,用主表的id字段关联上从表的CPID字段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值