Могу ли я иметь материализованное представление обновления для коммита только для двух из трех таблиц в его операторе выбора? - PullRequest
1 голос
/ 06 октября 2010

Я хотел бы использовать материализованное представление, которое обновляет ON COMMIT.Мое вспомогательное представление объединяет две таблицы в локальной базе данных и одну таблицу в удаленной базе данных через DB Link.Как можно обновить представление, только если были внесены изменения в одну из двух локальных таблиц?

Есть ли другие способы решения этой проблемы?Могу ли я получить материализованное представление, просто соединив две локальные таблицы и поставив NULLS для столбцов из удаленной базы данных, а затем запустив триггер для вставки / обновления в материализованное представление, которое заполнило бы эти поля?Или обновления материализованного представления распространяются обратно на исходные таблицы?

Я делаю что-то вроде этого:

SELECT LOC1.ID, LOC1.NAME, LOC2.PRICING_TYPE, REM1.PURCHASING_ID
FROM LOCAL_TABLE_A LOC1, LOCAL_TABLE_B LOC2, REMOTE_TABLE@SOMEDB.WORLD REM1
WHERE LOC1.ID = LOC2.MASTER_ID
AND LOC1.REM_ID = REM1.ID
AND LOC2.YEAR = REM1.YEAR

REMOTE_TABLE является только справочной таблицей для информации, связанной сдве локальные таблицы.Здесь не должно быть ничего, и я хочу, чтобы материализованное представление обновлялось, только если LOCAL_TABLE_A ИЛИ LOCAL_TABLE_B ИЗМЕНИТЬ.

1 Ответ

4 голосов
/ 06 октября 2010

Вы можете использовать промежуточное материализованное представление для удаленной таблицы. Этот MV будет создан в вашей локальной БД с REFRESH ON DEMAND, чтобы вы могли обновить его вручную. Ваш MV будет использовать локальную таблицу вместо удаленной таблицы.

...