Quindi sono abbastanza sicuro che Oracle lo supporti, quindi non ho idea di cosa sto facendo male. Questo codice funziona:Oracle - Come creare una vista materializzata con FAST REFRESH e JOINS
CREATE MATERIALIZED VIEW MV_Test
NOLOGGING
CACHE
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT V.* FROM TPM_PROJECTVERSION V;
Se posso aggiungere in un join, si rompe:
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 ottengo l'errore:
ORA-12054: non può impostare l'ON COMMIT attributo di aggiornamento per la vista materializzata
Ho creato registri delle viste materializzati sia su TPM_PROJECT che su TPM_PROJECTVERSION. TPM_PROJECT ha una chiave primaria di PROJECTID e TPM_PROJECTVERSION ha una chiave primaria composta di (PROJECTID, VERSIONID). Qual è il trucco per questo? Sto scavando attraverso i manuali Oracle senza alcun risultato. Grazie!
Hai provato 'DBMS_MVIEW.EXPLAIN_MVIEW'? Dovrebbe mostrarti le opzioni disponibili per la vista? – a1ex07
La prima cosa che farei è perdere i * nella clausola select. Non sono sicuro di come la vista gestirà i nomi di colonna duplicati – Phil
Sì, ho cercato di capire come eseguire DBMS_MVIEW.EXPLAIN_MVIEW ma non ho ancora funzionato. Scusa, sono molto nuovo per Oracle. –