日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql无法初始化数据库引擎_mysql使用模板解决旧数据处理,默认初始化数据的通用方法!...

發布時間:2023/12/18 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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使用模板解决旧数据处理,默认初始化数据的通用方法!...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。