如何在Oracle中更新后检查以前的值

evrscar2  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(228)

我在2022年1月1日更新了oracle表中的一列,并提交了如何在该特定列更新前检查哪个值存在。
有没有可能查看2021年12月31日该列中的值。
谢谢

  1. select salary from emp where id = 1111;
33qvvth1

33qvvth11#

一般情况下,您不能。一旦更新了表,以前的值就消失了。
然而:

  • 如果您有一个历史记录/日志表,每当您更新主表时(通常通过触发器或过程)都要填充该表,那么您可以从该表中检索历史值;但是,您必须事先创建历史表和过程/触发器。
  • 如果在数据库/表空间/表上启用了闪回,并且闪回保留期足够长,则可以用途:
  1. SELECT salary
  2. FROM emp AS OF TIMESTAMP TIMESTAMP '2021-12-31 23:59:59.999999999'
  3. WHERE id = 1111

如果在更改之前未启用闪回,或者闪回保留期短于所需的保留期,则该操作将不起作用。

  • 假设您备份了数据库(请说您备份了数据库),您可以将数据库恢复到所述日期之前的最新备份,然后可以从该备份日期查询表。

相关问题