обновить представление коммита с группой по MAX - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь создать материализованное представление таблицы без предложения where.Однако "REFRESH ON COMMIT" отвергается оракулом.

Есть ли способ структурировать это так, чтобы его можно было обновлять?created - это дата.

CREATE MATERIALIZED VIEW MV_SNR_LATEST REFRESH ON COMMIT
AS
SELECT * FROM T_SNR snr
WHERE (snr.created, snr.m_id, snr.snor, snr.ai)
IN (SELECT MAX(created), m_id, snor, ai 
FROM t_snr s2 GROUP BY s2.M_ID, s2.snor, s2.AI);

1 Ответ

0 голосов
/ 05 декабря 2018

Я не думаю, что это возможно, отметьте Общие ограничения на быстрое обновление

Определяющий запрос для материализованного представления ограничен следующим образом:

  • Материализованное представление не должно содержать ссылок на неповторяющиеся выражения, такие как SYSDATE и ROWNUM.

  • Материализованное представление не должно содержать ссылок на типы данных RAW или LONG RAW.

  • Он не может содержать подзапрос списка SELECT.

  • Он не может содержать аналитические функции (например, RANK) впредложение SELECT.

  • Не может ссылаться на таблицу, для которой определен индекс XMLIndex.

  • Не может содержать предложение MODEL.

  • Он не может содержать предложение HAVING с подзапросом.

  • Он не может содержать вложенные запросы, которые имеют ЛЮБОЙ, ВСЕ или НЕ СУЩЕСТВУЮТ.

  • Не может содержать предложение [START WITH…] CONNECT BY.

  • Он не может содержать несколько таблиц подробностей на разных сайтах.

  • ON COMMIT Материализованные представления не могут иметь удаленные таблицы подробностей.

  • Вложенные материализованные представления должны иметь объединение или агрегирование.

  • Материализованные представления объединения и материализованные агрегированные представления с предложением GROUP BY не могут быть выбраны из организованной по индексу таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...