Итак, я уверен, что Oracle поддерживает это, поэтому я понятия не имею, что я делаю неправильно. Этот код работает:
CREATE MATERIALIZED VIEW MV_Test
NOLOGGING
CACHE
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT V.* FROM TPM_PROJECTVERSION V;
Если я добавляю JOIN, он прерывается:
CREATE MATERIALIZED VIEW MV_Test
NOLOGGING
CACHE
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT V.*, P.* FROM TPM_PROJECTVERSION V
INNER JOIN TPM_PROJECT P ON P.PROJECTID = V.PROJECTID
Теперь я получаю сообщение об ошибке:
ORA-12054: не может установить атрибут обновления ON COMMIT для материализованного представления
Я создал материализованные журналы просмотра как на TPM_PROJECT, так и на TPM_PROJECTVERSION. TPM_PROJECT имеет первичный ключ PROJECTID, а TPM_PROJECTVERSION имеет составной первичный ключ (PROJECTID, VERSIONID). Что за трюк? Я копался в руководствах Oracle безрезультатно. Спасибо!