Я пытаюсь написать материализованное представление.Когда я запускаю код, 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;
Это в половину запроса.Другая половина похожа и теперь бесполезна добавить ее