在实体化视图中更改字段 - oracle

change fields in materialized view - oracle

晚安,

我有一个工作实体化视图,我将向其添加 15 个左连接,类似于下面示例行中的那些,有没有办法编辑它并隐藏 rowids?,如果我用 primary 替换 rowid关键,我可以省略它们吗?

因为我必须放置 15 个额外的 rowid,这在视觉上不切实际。有没有办法让它只显示我想要的字段而不是rowsid,

我还能如何更改它以使其没有不必要的列,有没有一种方法可以处理增量加载而不必执行所有复杂的存储过程? 这种方式处理增量加载非常简单,物化视图必须是增量的(刷新快)

非常感谢。 问候。

create materialized view vm_prueba2

refresh fast on demand

with rowid as

select 
   o.rowid o_rowid,
   c.rowid c_rowid,
   e.rowid e_rowid,
   ordenid,
   o.empleadoid,
   o.clienteid,
   fechaorden,
   descuento,
   nvl(c.desccripcion,'') as ddesc,
   e.desccripcion

from ordenes o, tabla_hija c, tabla_hija e

where
 
  ( o.clienteid=c.valor(+) and c.id_tabla=1 or c.valor is null ) and
   ( o.empleadoid=e.valor(+) and e.id_tabla=2 or e.valor is null )
  • 创建实体化视图,其中包含所有 rowids
  • 在该实体化视图的顶部创建一个 视图,它只显示您想要的列
    • 这样,您将“隐藏”不需要的所有内容(rowids,对吧?)
      • 这也意味着您实际上会在选择中使用视图,而不是物化视图
    • 物化视图刷新会正常工作照常

例如:

create materialized view vm_prueba2
  refresh fast on demand
  with rowid as
select 
   o.rowid o_rowid,
  ...
from ...;

-- a view would select only some columns from the materialized view:
create or replace view v_vm_prueba2 as
  select empleadoid,
         clienteid,
         fechaorden
from vm_prueba2;