一 业务背景新版本中新建了一个项目的角色表,即每个项目都拥有几个角色,原来历史项目是没有角色的,这就要求使用脚本对表中的历史项目进行处理,

业务需求:每个项目都要有三个角色:

表 : 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(),然后如果有二级直属,即角色表中每个角色还有固定的应用什么的,继续临时表就可!

最新文章

  1. 网络爬虫:使用Scrapy框架编写一个抓取书籍信息的爬虫服务
  2. Android自定义控件1
  3. IOS8Preview-Huge for developer and Massive for everyone else
  4. CentOs6.5中安装和配置vsftp简明教程
  5. (10)odoo控制器操作
  6. “System.Threading.ThreadAbortException”类型的第一次机会异常在 mscorlib.dll 中发
  7. POJ1265——Area(Pick定理+多边形面积)
  8. 如何允许外网可以连接mysql数据库
  9. ubuntu WiFi: operation not possible due to RF-kill《转载》
  10. 安装TDM-GCC
  11. 大数据的胖哥的方式(9)- 金融业数据仓库的逻辑模型FS-LDM
  12. JS怎样将拖拉事件与点击事件分离?
  13. wamp配置虚拟机步骤
  14. 20162318 实验二《Java面向对象程序设计》实验报告
  15. 玩转web之ligerui(一)---ligerGrid重新指定url
  16. mysql中Error : Invalid default value for 'timestamp'问题
  17. SpringBoot thymeleaf模板页面没提示,SpringBoot thymeleaf模板插件安装
  18. Android Studio 快捷键、Debug的使用
  19. [转]uboot中SPI Flash Booting配置
  20. 从入门到不放弃——OO第一次作业总结

热门文章

  1. 【转载】css3动画简介以及动画库animate.css的使用
  2. ACdream1093
  3. 静态属性加载到jvm时候就存放在数据共享区,而不是等new后出现
  4. oracle exp导出加上过滤条件
  5. 【刷题】洛谷 P1501 [国家集训队]Tree II
  6. 【刷题】BZOJ 5091 [Lydsy1711月赛]摘苹果
  7. Linux内核分析实验四----
  8. linux内核分析 第六周读书笔记
  9. 设置Linux终端字体颜色
  10. hiho一下 第197周 逆序单词