一行命令修改所有外键值

由于业务需要,我们需要把主表的一个主键 id  = 1,用做特别的处理。 因此原来所有引用该主键的外键值也需要修改为新的值。

我们在主表里插入了 id = 8 的记录,然后修改所有有外键引用的表里的记录值从 id = 1 修改为 8。

for t in `mysqldump -d dbname|grep ‘company_id’|grep REFERENCES|awk ‘{print $2}’|sed -e ‘s/_ibfk.*$//g’ -e ‘s/\`//g’|sort|uniq`; do echo $t; mysql dbname -e “update $t set company_id=8 where company_id=1”; done

以上单行命令,我们从 mysqldump 导出的表结构里,找到所有外键的名字,并且把外键的表的名字取出来,然后更新每张表的 company_id。

作者: 甬洁网络

--移动互联网&物联网技术提供商