Así que estoy bastante seguro de que Oracle admite esto, así que no tengo idea de lo que estoy haciendo mal. Este código funciona:Oracle: cómo crear una vista materializada con FAST REFRESH y se une a
CREATE MATERIALIZED VIEW MV_Test
NOLOGGING
CACHE
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT V.* FROM TPM_PROJECTVERSION V;
Si agrego en una unión, se 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
Ahora me sale el error:
ORA-12054: no se puede establecer ON COMMIT atributo de actualización para la vista materializada
He creado registros de vistas materializadas tanto en TPM_PROJECT como en TPM_PROJECTVERSION. TPM_PROJECT tiene una clave principal de PROJECTID y TPM_PROJECTVERSION tiene una clave primaria compuesta de (PROJECTID, VERSIONID). ¿Cuál es el truco para esto? He estado buscando en los manuales de Oracle en vano. ¡Gracias!
¿Usted intentó 'DBMS_MVIEW.EXPLAIN_MVIEW'? Debería mostrarle las opciones disponibles para la vista? – a1ex07
Lo primero que haría es perder el * en la cláusula de selección. No estoy seguro de cómo manejaría la vista los nombres de columnas duplicados – Phil
Sí, he estado tratando de averiguar cómo ejecutar DBMS_MVIEW.EXPLAIN_MVIEW pero todavía no lo he conseguido: lo siento, soy muy nuevo en Oracle. –