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 条件,修改哪块备份哪块。

猜你喜欢

转载自blog.csdn.net/yy_diego/article/details/127621711