V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
v2exblog
V2EX  ›  MySQL

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

  •  1
     
  •   v2exblog · 2021-06-17 11:42:32 +08:00 · 1594 次点击
    这是一个创建于 1015 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想的分三步:

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

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

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

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

    也有业务数据的情况下, 我们都是新增字段, 老的字段不修改不删除
    bthulu
        3
    bthulu  
       2021-06-17 14:14:55 +08:00
    库名改掉, 再把数据改好, 再把库名改回去, 多简单的事啊
    fkname
        4
    fkname  
       2021-06-17 14:27:52 +08:00
    我们是使用中间库处理,从从库同步业务表到中间库,在中间库更新后再根据主键更新回主库
    no1xsyzy
        5
    no1xsyzy  
       2021-06-17 14:28:01 +08:00
    标准操作是抹消主键的含义,使主键内容的修改不具有任何现实意义。
    任何对主键的修改应当被视为对该记录的(软)删除并用相同的数据重建
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4572 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 10:05 · PVG 18:05 · LAX 03:05 · JFK 06:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.