mysql处理旧数据-使用模板以及临时表,不建议直接使用本表!!
2024-10-19 04:31:54
一 业务背景新版本中新建了一个项目的角色表,即每个项目都拥有几个角色,原来历史项目是没有角色的,这就要求使用脚本对表中的历史项目进行处理,
业务需求:每个项目都要有三个角色:
表 : pm_project 项目表
pm_role 项目角色表
具体业务比较复杂,这里只考虑历史项目的直属角色的初始化,不考虑二级直属等等.
思路是准备固定的角色模板数据,然后与项目表关联产生笛卡尔积,最后插入;
二 sql
首先准备模板数据:
/*-- 准备模板默认角色 --*/
insert into pm_role (id,role_code,role_name,project_id,is_del,order_num) values(LPAD(UUID_SHORT(),32,UUID_SHORT()),"XMJL_0","项目经理","-1",0,1);
insert into pm_role (id,role_code,role_name,project_id,is_del,order_num) values(LPAD(UUID_SHORT(),32,UUID_SHORT()),"GSSHR_0","工时审核人","-1",0,3);
insert into pm_role (id,role_code,role_name,project_id,is_del,order_num) values(LPAD(UUID_SHORT(),32,UUID_SHORT()),"XMCY_0","项目成员","-1",0,2);
然后,创建临时表,注意,这里必须要使用临时表,否则如果直接用本表关联的话,一起执行速度快的话会导致order_num排序字段都是1,分开执行就没问题,这里类似于UUID() 与lpad()的区别,建议都使用lpad,这里也是一样的
/*-- 准备临时表 --*/
CREATE TABLE pm_role_temp like pm_role;/*--初始化角色--*/
insert into pm_role_temp (id,role_code,role_name,project_id,is_del,order_num)
(select
lpad(UUID_SHORT(),32,UUID_SHORT()),
t2.role_code,
t2.role_name,
t1.id,
t2.is_del,
t2.order_num
FROM pm_project t1,pm_role t2 where t2.project_id="-1"); insert into pm_role(select * from pm_role_temp); DROP TABLE pm_role_temp;
先把数据插入到临时表中,再插入到角色表中,最后删除临时表!
这很简单,但是有个大坑,因为图省事,刚开始用了本表,即直接用角色表关联,自己开发库和测试库都没问题,但是最后生产库就是有问题,排序都是1,所以保险起见,还是用临时表,记录一下!
这种情况在UUID() 和lpad()上也吃过亏,建议大家以后都用lpad(),然后如果有二级直属,即角色表中每个角色还有固定的应用什么的,继续临时表就可!
最新文章
- 网络爬虫:使用Scrapy框架编写一个抓取书籍信息的爬虫服务
- Android自定义控件1
- IOS8Preview-Huge for developer and Massive for everyone else
- CentOs6.5中安装和配置vsftp简明教程
- (10)odoo控制器操作
- “System.Threading.ThreadAbortException”类型的第一次机会异常在 mscorlib.dll 中发
- POJ1265——Area(Pick定理+多边形面积)
- 如何允许外网可以连接mysql数据库
- ubuntu WiFi: operation not possible due to RF-kill《转载》
- 安装TDM-GCC
- 大数据的胖哥的方式(9)- 金融业数据仓库的逻辑模型FS-LDM
- JS怎样将拖拉事件与点击事件分离?
- wamp配置虚拟机步骤
- 20162318 实验二《Java面向对象程序设计》实验报告
- 玩转web之ligerui(一)---ligerGrid重新指定url
- mysql中Error : Invalid default value for 'timestamp'问题
- SpringBoot thymeleaf模板页面没提示,SpringBoot thymeleaf模板插件安装
- Android Studio 快捷键、Debug的使用
- [转]uboot中SPI Flash Booting配置
- 从入门到不放弃——OO第一次作业总结