MySQL-如何根据业务需要,顺利的清理(删除)测试或非必要数据

什么?删库跑路的时候,居然发现 delete 脚本执行不了?

别慌!那是因为数据和数据之间是有关联的!

以上是个玩笑;

但是以下脚本,可以很顺利的清理一些垃圾数据。前提是操作人要捋清楚表和表的关联关系,做这件事情的好处,可不仅仅是给系统数据库瘦身,同时还会增强你对整个业务系统数据结构的理解,将同一业务的全部数据库表,用 select 尽量一次性查出来,如果数据太多,可以加个limit分页,但是千万不要写错关联字段,也就是 on 后面的内容,否则后果你比我更清楚。然后将 select 更换成 delete,这样做可以根据需要清理掉不用的业务数据,同时还不会误伤友军。是不是很奈斯?且看:

清理系统多余的流程相关表数据

卧槽!这可是核心数据,删错你就完蛋了!业务流程全部瘫痪!(男人哭吧!不是罪)

SET FOREIGN_KEY_CHECKS = 0;

DELETE 
	new_is, new_i, tu, nr, ent, acc, 
	t, i, a, c, r, br, n, d 
FROM 
	/* 工作流定义表 */
	wf_def d
	/* 工作流节点定义表 */
	left JOIN wf_def_node n ON n.wf_def_id = d.id 
	/* 节点的投票规则定义信息 */
	LEFT JOIN wf_def_node_ballot_rules br ON br.node_id = n.id 
	/* 节点可以扭转的路由路径定义信息 */
	LEFT JOIN wf_def_node_route r ON r.node_id = n.id
	/* 提前所定义的触发路由时,检查业务的脚本 */
	LEFT JOIN wf_def_node_route_checkscript c ON c.rid = r.id
	/* 提前所定义的触发路由时,处理业务的脚本 */
	LEFT JOIN wf_def_node_route_actionscript a ON a.rid = r.id 
	
	/* 流程实例 */
	LEFT JOIN wf_ins i ON i.wf_def_id = d.id 
	/* 流程实例处理任务 */
	LEFT JOIN wf_ins_task t ON t.wf_def_id = d.id 
	/* 任务受理结果 */
	LEFT JOIN wf_ins_task_acceptance acc ON acc.task_id = t.id 
	/* 委托代办信息 */
	LEFT JOIN wf_ins_task_entrust ent ON ent.wf_node_id = n.id
	/* 可参与该节点的角色 */
	LEFT JOIN _node_role nr ON nr.nid = n.id 
	/* 能处理该任务的用户 */
	LEFT JOIN _task_user tu ON tu.tid = t.id 
	
	/* 产生子流程实例记录 */
	LEFT JOIN wf_def_node_route_new_ins new_i ON new_i.wf_def_id = d.id 
	LEFT JOIN wf_ins_source new_is ON new_is.source_id = i.id 

WHERE d.code = '000000' ; /* 要清理的流程编号 (业务表数据除外)*/

SET FOREIGN_KEY_CHECKS = 1;
COMMIT;

清理系统不必要的系统菜单

这个也不能乱删,弄不好菜单没了。

SET FOREIGN_KEY_CHECKS = 0;

DELETE 
	m , a, b  
FROM
	/* 权限分支表 */
	branch_auth a 
    	/* 分支数据主表 */
inner JOIN branch b ON b.id = a.id 
	/* 菜单表 */
LEFT JOIN branch_auth_menu m ON m.id = a.id 
	/* 角色权限关联表 */
LEFT JOIN _role_auth ra ON ra.aid = a.id 

WHERE 
	a.code LIKE '003007011%' ; /* 要删除的菜单编号 */
    
SET FOREIGN_KEY_CHECKS = 1;
COMMIT;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值