我正在尝试编写一个实例化视图。当我运行代码时,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;
这是一半查询。另一半相似,现在没用了