mysql 变更操作

场景描述

生产环境下有时需要更新直接修改数据库,为防止数据操作异常导致数据丢失,大都是先备份再操作,操作失败时回滚备份。

要修改的表:qrtz_triggers

临时备份表:qrtz_triggers_20221031

修改操作: 删除 qrtz_triggers 中的一行数据。

操作演示

应用备份

use demo;
create table qrtz_triggers_20221031 as select * from qrtz_triggers;

修改操作

delete from qrtz_fired_triggers where SCHED_NAME='clusteredScheduler' and ENTRY_ID='job-scheduler-7b9f7bcd78-8b9kt16669688543581666968854330';

失败时回滚

use refidb;
replace into qrtz_fired_triggers select * from qrtz_fired_triggers_20221031;

replace into insert into 有什么区别?

replace into 会根据主键或者唯一索引判断该条记录是否存在,如果存在则先删除此行数据,再插入新的数据;如果不存在,则直接插入新数据。所以使用 replace into 需要注意的是表中必须存在主键或者唯一索引,不然的话会直接插入,导致数据重复。

insert into 直接插入,如果主键或者唯一索引已经存在会直接插入失败。

啰嗦一句

上述操作只是个 demo 演示,真正的生产环境可能表中的数据很多,全表操作不现实。备份和修改时需要加上 where 条件,修改哪块备份哪块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值