现在有个需求是把oracle数据库一张表里的字段(序号)把01-09改为1-9
因为字段是varchar类型,不便修改字段类型后,便通过update语句来批量修改
UPDATE 表名 t1 SET 字段1=(select (case when 字段1 like '0%'then replace(字段1,'0','') else 字段1 end) from 表名 t2 where t1.id=t2.id and t1.字段1=t2.字段1);
这当然是之后正确的代码。
在前几分钟,我漏了条件,把数据错误修改了。
心想,完了完了!要被骂死了。
虽然心里慌得一匹,但表面却稳如老狗。
趁没人发现赶紧把数据回滚了。
select * from 表名 as of timestamp to_timestamp('2018-09-11 11:11:11','YYYY-MM-DD hh:mi:ss');
alter table 表名 enable row movement;
flashback table 表名 to timestamp TO_TIMESTAMP('2018-09-11 11:11:11', 'YYYY-MM-DD hh:mi:ss');
第一行是查找指定时间时的数据,把时间设置在你修改前一两分钟。
第二行是开启这张表可以回归数据。
第三行就开始数据回归到指定时间段时的数据。
之后再执行正确的代码就解决了。