刷新视图的结果时?

eli*_*tou 5 sql oracle view materialized-views

我实现了表中视图的结果.我想知道他们是否有办法知道此视图的结果何时更改以刷新它.物化视图和结果缓存可以做到这一点,但我不想使用这两种技术.他们是另一种回答这个问题的方法吗?

实际上,我们有一个通用系统,每隔n分钟实现并刷新一次视图.刷新的成本可能很高,我试图知道我们是否可以知道基础数据是否有变化.

我们不使用物化视图,因为完全刷新会截断表,并且只在具有主键的表上快速刷新.

结果缓存无法完成工作,因为我们没有足够的内存.

所以我想知道我们是否可以使用一种技术来了解自上次刷新以来视图的基础数据是否发生了变化

小智 1

您可以有一个如下所示的标志表:

CREATE TABLE FlagTable
  SourceTable varchar(30),
  UpdateDate DATETIME,
  Handled CHAR(1) DEFAULT 'N'
Run Code Online (Sandbox Code Playgroud)

在基表上创建一个触发器,在表的 INSERT、UPDATE 或 DELETE 中,将一条记录插入到 FlagTable 中,其中包含基表的名称

当您想要检查刷新时,只需选择 WHERE Handled = 'N',刷新伪视图,然后设置 Handled = 'Y'