Быстрое обновление материализованного представления на основе не быстрого обновления - PullRequest
2 голосов
/ 19 сентября 2011

Я обнаружил, что могу иметь две таблицы и создать fast refresh on commit materialized view на основе этих объединенных таблиц.

Однако я хотел бы создать материализованное представление fast refresh on commitна основе следующего:

(1) Таблица, к которой присоединяются
(2) материализованное представление complete refresh on demand, которое само основано на других представлениях (то есть обычных представлениях).

Когда я пытаюсь это сделать, я получаю сообщение об ошибке ORA-12053, в котором говорится о том, что записи в предложении from имеют зависимости друг от друга, даже если они явно нет.

Я могу обойти это, заменив(2) с обычной таблицей и просто выполнить массовую вставку в эту таблицу вместо обновления материализованного представления.Однако я бы предпочел не делать этого, если в этом нет необходимости.

Я попытаюсь поработать над минимальным примером, иллюстрирующим ошибку, но если бы вы могли дать мне представление о том, что я хочу сделать,возможно (желательно на примере) или не возможно, что было бы здорово.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011

Существуют ограничения на вложенные материализованные представления.Я описал их в этом блоге .ORA-12053 является результатом несоответствия первому ограничению вложенных MV.Создание базового MV более сложным (объединение, объединение или объединение всех MV) - это решение.

С уважением,
Роб.

0 голосов
/ 19 сентября 2011

Следуйте этим фактам, чтобы понять ошибку.

  1. Материализованное представление Fast Refresh on Commit обновляется строка на основе изменений, внесенных в базовые таблицы.
  2. Материализованное представление Refresh Complete on Demand обновляется обрежьте таблицу назначения и вставьте все заново.
  3. Обновление верхнего материализованного представления будет невозможно, потому что oracle не может отслеживать изменения в таблице 2 (то есть обновление завершено материализованный вид.)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...