mysql5.7 数据库一共一百个表,需要改 student 表的主键 id,以及其他 50 多个关联表的 student_id,请问什么方案比较合适?数据量几十万

2021-06-17 11:42:32 +08:00
 0x0208v0
我想的分三步:

第零步,mysqldump 数据库备份一下

第一步,把 student 表的主键 id 改掉

第二步,把关联表的 student_id 用 update table1 set student_id=new where student_id=old 语句改掉

请问这种场景的标准操作是什么?
1614 次点击
所在节点    MySQL
5 条回复
ccde8259
2021-06-17 11:49:20 +08:00
第一步,create table like
第二步,insert into select
第三步,update set where
第四步,alter table rename
henyi2211
2021-06-17 11:51:12 +08:00
这一改, 项目里面的逻辑也要跟着一起改吧, 这工作量......

也有业务数据的情况下, 我们都是新增字段, 老的字段不修改不删除
bthulu
2021-06-17 14:14:55 +08:00
库名改掉, 再把数据改好, 再把库名改回去, 多简单的事啊
fkname
2021-06-17 14:27:52 +08:00
我们是使用中间库处理,从从库同步业务表到中间库,在中间库更新后再根据主键更新回主库
no1xsyzy
2021-06-17 14:28:01 +08:00
标准操作是抹消主键的含义,使主键内容的修改不具有任何现实意义。
任何对主键的修改应当被视为对该记录的(软)删除并用相同的数据重建

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/783924

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX