物化视图-提交条件的更新

时间:2018-12-19 22:49:39

标签: oracle11g materialized-views

我正在尝试编写一个实例化视图。当我运行代码时,oracle返回以下错误

Error at Command Line:31 Column:14
Error report:
SQL Error: ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
12054. 00000 -  "cannot set the ON COMMIT refresh attribute for the materialized view"
*Cause:    The materialized view did not satisfy conditions for refresh at
       commit time.

当我使用“按需”选项进行更新时,该查询运行良好。当我尝试以自动模式更新实例化视图时开始出现问题。 我不使用物化视图日志。 查询是

CREATE MATERIALIZED VIEW "PARLAMENTO2018"."ASSENZE2" ("COGNOME", "NOME", "CF", "PRESENZE", "PREC", "srowid", "prowid")
  REFRESH FORCE ON commit
  AS select
  cognome, nome, cf, presenze, prec, srowid, prowid
from(
  select
    cognome, nome, cf, presenze, totale, presenze*100/totale as prec, s.rowid as srowid, p.rowid as prowid
  from
    senatoriattuali s left JOIN partecipazioni p
    on cf = p.parlamentare
    and sedute_tipo = 's',
--seleziona le sedute del senato ('s') effettuate nell'ultima legislatura
    (select
       count(data) as totale
     from
       sedute
     where
       tipo = 's'
       and data >= (
--seleziona la data di'inizio dell'ultima legislatura
         select
           max(datainizio)
         from
           legislature)),
--calcola il numero di presenze di un senatore nella legislazione corrente
    (select 
       count (parlamentare) as presenze
     from 
       sedute, partecipazioni
     where 
       tipo = 's'
       and sedute_tipo = tipo
       and sedute_data = data
       and data >= (
--seleziona la data di'inizio dell'ultima legislatura
         select 
           max(datainizio)
         from
           legislature)) 

group by cf, cognome, nome, totale, presenze,s.rowid, p.rowid)

where prec < 30;

这是一半查询。另一半相似,现在没用了

0 个答案:

没有答案