Oracle使用updateSQL语句忘记加条件,误改了其他数据的回滚方法
执行下面sql时,忘加条件:
select * from er_bxzb where djbh = '264X202108030227'
select * from er_bxzb where djbh = '264X202107060442';
update er_bxzb set spzt = '1';
想要修改的单据
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLmFWN5gjN5IWNkljZ3ETNhZGZ3QTYycTOzIWZxIWNhJzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
这是其他单据的审批状态
误改后不管是保存还是暂存,所有审批状态都变成了审核通过-。-。
解决办法就是执行以下三条sql:
(1)第一条SQL语句
--作用就是找到刚刚误操作执行的时间节点,这个时间便是回滚的时间
select r.FIRST_LOAD_TIME,r.* from v$sqlarea r order by r.FIRST_LOAD_TIME desc ;
(2)第二条SQL语句
--作用就是开启表的行迁移
alter table m_met_rules enable row movement;
(3)第三条SQL语句
--作用就是回滚表数据到目标时间节点
flashback table test to timestamp to_timestamp('20211129 14:52:35','YYYYMMDD HH24:MI:SS');
上面语句的table和时间要根据自己的情况进行修改
执行完之后,就会回到这个误操作之前啦,然后在执行正确的语句,便可以完成,对数据库操作一定要仔细仔细再仔细!
正确SQL语句
正确修改后
原文链接:https://blog.csdn.net/hl961403370/article/details/121691004