mysql无法初始化数据库引擎_mysql使用模板解决旧数据处理,默认初始化数据的通用方法!...
一 业务介绍
先来看看我这得大致业务需求,这次业务比较简单:
即从现在开始,每次new一个爷爷都需要默认初始化给这个爷爷三个儿子(子表,爷爷id去关联),并在初始化每个儿子的同时再给每个儿子初始化若干个孙子(爸爸表的子表,爸爸id关联),
这么说可能比较绕,综艺就是在爷爷表插入一条数据的同时,往父表插入固定的几条记录,然后往父表插入每条记录的同时再往儿子表插入固定的记录,之间都是用主键关联,表名分别是:
爷爷 : pm_project
爸爸: pm_role (project_id 关联爷爷)
儿子: pm_role_app ()role_id 关联爸爸,同时project_id再关联爷爷)
需要new的儿子的模板表:pm_project_app_filter, 因为业务需要,孙子模板放在单独的表中,爸爸模板放在自己表中,爷爷id设为-1.
二 初始化父表
我们先不考虑java在新建爷爷时的处理方式,来看旧爷爷的处理.
首先准备爸爸的模板,即new一个爷爷时,需要初始化爸爸是几个,分别有什么具体要求,那么可以直接在爸爸表里建立业务需要的模板,只需要将爷爷id设置为-1即可:
如图,有了这三个模板之后,我们就可以先给每个旧的爷爷三个他们的儿子,这里采用笛卡尔积批量插入处理:
insert into pm_role (id,role_code,role_name,project_id,is_del)
(select
lpad(UUID_SHORT(),32,UUID_SHORT()),
t2.role_code,
t2.role_name,
t1.id,
t2.is_del
FROM pm_project t1,pm_role t2 where t2.project_id="-1");
即关联爷爷和爸爸表,然后筛选出爷爷id=-1的三个模板儿子,与爷爷表中每个爷爷产生笛卡尔积,给每个爷爷三个儿子,完成,注意,
这里主键采用lpad函数,不建议使用UUID,原因是有的mysql引擎性能如果过于强大就会报错,因为速度太快,造成主键重复,来不及随机
三 初始化子表
再来看孙子表中需要的模板,处于特殊业务需求,这里孙子表的某个字段需要的数据采用另一张表的模板存储:
即孙子表每个孙子都需要一个app_id,也就是说,每个爸爸有三个不同app_id的儿子,这个根据业务可以随意调整,然后初始化:
insert into pm_role_app(
id,
project_id,
role_id,
app_id,
data_scope
)
select
lpad(UUID_SHORT(),32,UUID_SHORT()),
t1.project_id,
t1.id,
t2.app_id,
case when t2.app_id="46d577d4dcb344b583e7254dee3d6dba" then 3 else 1 END
FROM pm_role t1,pm_project_app_filter t2 where t1.project_id!="-1";
这时候关联爸爸表和这个模板表,并排除爸爸表中的模板 ,然后给每个爸爸都生成三个带有模板app_id的儿子,就可以了,这里也采用批量插入.
四 新建爷爷时处理的逻辑
这里主要就是按照业务写代码就可以了,没什么要说的,直接贴代码:
保存爷爷:
dao.save(pMProject);
pmRoleService.init(pMProject.getId());//用爷爷id,保存三个爸爸
保存爸爸:
保存儿子:
,
这样,以后如果要多的每次需要多的儿子或者爸爸,只需要在模板表中添加一条记录,或者在常量类中多配置一个爸爸模板即可,便于后期维护扩展,sql的初始化语句也可以通用!
mysql无法初始化数据库引擎_mysql使用模板解决旧数据处理,默认初始化数据的通用方法!...相关推荐
- mysql的innodb数据库引擎详解
http://www.jb51.net/softjc/158474.html 这篇文章主要介绍了mysql的innodb数据库引擎,需要的朋友可以参考下 一.mysql体系结构和存储引擎 1.1.数据 ...
- mysql常用的两种数据库引擎_Mysql数据库常用两种引擎的介绍
1.数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyIAS ...
- mysql的常用存储引擎_MySQL常见的三种存储引擎
Ok,我们知道了,引擎就是一个程序的核心组件. 简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式. 存储引擎的概念是MySQL的特点,Oracle中没有专门的存储引擎的概念,Oracle有O ...
- MySQL的系统数据库是_mysql数据库系统
如何搭建 mysql数据库 1) 卸载原有的mysql 这是rpm方式安装的mysql,所以使用 rpm -e mysql --nodeps 进行卸载 2) 挂载之后打开 3) ...
- mysql 查看函数fsync_查看MySql使用的数据库引擎
查看使用的数据库引擎 show variables like '%storage_engine%'; 显示的使用的是InnoDB 查看引擎状态 show engine innodb status ...
- mysql常用的存储引擎_Mysql存储引擎
什么是存储引擎? 关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式.有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取 ...
- mysql支持数据安全的引擎_MySQL 支持的存储引擎
存储引擎: 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建.查询.更新和删除数据操作. 不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎还可以获得 ...
- mysql常用 的数据库引擎
一.MyISAM存储引擎 MyISAM基于ISAM存储引擎,并对其进行扩展.它是在Web.数据仓储和其他应用环境下最常使用的存储引擎之一.MyISAM拥有较高的插入.查询速度,但不支持事物.MyISA ...
- mysql有那些存储引擎_MySQL有那哪些存储引擎
实际我们在平时的开发中,经常会遇到的,在用SQLyog等工具创建表时,就有一个引擎项要你去选.如下图: Mysql的存储引擎有这么多种,实际我们在平时用的最多的莫过于InnoDB和MyISAM了. 所 ...
最新文章
- java jsp 文件上传_用JSP编写文件上传
- 能拯救你的人也只能是自己
- HTML5常用标签~
- 石头剪刀布php源码,php实现的网页版剪刀石头布游戏示例
- Stone game(dp计数上海icpc网络预选赛)
- 瀑布模型 原型模型 增量模型 螺旋模型的优缺点
- JDK源码系列(5)-StringBuffer
- 基于电能计量芯片HLW8012计量插座方
- NACOS 2.0.3 集群客户端连接出现503 500异常处理 踩坑记录
- 2021Java实现关注公众号登陆网站
- 服务器系统文件sam在哪里,SAM文件介绍
- Modern Family 开篇语
- STM8S(stm8s003F) ADC AIN7的使用
- BT技术概念 — 一些术语的意思
- python毕业设计作品基于django框架 景区购票系统毕设成品(4)开题报告
- java怎么查看jdk版本_java版本和jdk版本必须一样
- diy 单片机 自动浇花_基于单片机的自动浇花器设计
- 2022茶艺师(中级)特种作业证考试题库及答案
- vue form表单数据提交与 router 按钮快速调用页面
- python京东自动签到_Python 实现京东自动签到领京豆
热门文章
- When will the reference ATTRIBUTE_REF of an BOL entity be cleared
- nodejs TCP server和TCP client如何进行数据交互
- 查看SAP CRM和C4C的UI technical信息
- sqlplus连接不上oracle,环境变量设置错误导致sqlplus 连接不上oracle
- php魔术方法例子,PHP中魔术方法的使用举例
- 上下界网络流-无源汇可行流与有源汇最大流
- 数据可视化|实验一 绘图基础语法和常用参数
- python像素处理_Python+OpenCV图像处理(五)—— 像素运算
- 网站不大但加载很慢怎么优化_博客网站首页加载优化
- python 爬虫 标签文本beautifullsoup_【Python爬虫】学习BeautifulSoup