生产数据新增子表(用于保存历史数据)解决方案 ,含数据运维
先说需求,可以简化为学生提交作业的一个需求,之前是学生提交作业->老师评价作业,每个学生每个作业只会有一条数据,学生再次提交是去更新他的作业
现在需要改成 学生提交作业->老师评价作业->学生修改作业->学生再次提交作业->老师再次评价作业。。。 每个学生会有多条提交记录,也就是会有多条数据
很简单会想到 增加一张子表,这里就是作业提交历史表
用之前作业表的id关联。业务代码不难实现,麻烦的是需要将数据运维到子表里,好在之前每个学生每个作业只会有一条数据,所以只需要将原表的几个关键字段数据
插入到子表就可以了
具体操作
1.首先Navicat 右键点击某一列,可以复制出该列的所有值,所以我们要复制主键id,但是是换行分隔的,要替换成","分隔。方便后边insert
2.我没装记事本++,所以用的word替换,CTRL+H, ^p代表制表符
3.然后执行insert,把主表的work_id插进去
INSERT INTO t (work_id) VALUES (69),(70),(71),(72),(73),(75),(88),(106),(107),(108),(109),(110),(111),(112),(113),(114),(115),(116),(117),(118),(119),(120),(121),(122),(123),(124),(130),(131),(142),(144),(145),(146),(147),(153),(155),(156),(157),(158),(175),(176),(182),(183),(237),(238),(239),(240),(241),(244),(248),(249),(250),(251),(252),(253),(263),(264),(265),(266),(267),(268),(269),(270),(271),(272),(273),(274),(275),(276),(277),(278),(279),(280),(281),(282),(283),(284),(285),(286),(287),(288),(289),(290),(291),(292),(293),(294),(295),(296),(297),(298),(299),(301),(302),(303),(304),(305)
4.然后执行更新,将同一word_id的数据刷到子表,t1是子表
update t1,t2 set
t1.create_time = t2.create_time,
t1.creator = t2.creator,
t1.status = t2.status,
t1.approve_info = t2.approve_info,
t1.iframe = t2.iframe
WHERE t1.work_id=t2.work_id