ORACLE: la vue matérialisée ne fonctionne pas lors de l'utilisation de LEFT JOIN
Je veux créer une VUE MATÉRIALISÉE à partir d'une JOINTURE GAUCHE de 2 tables. Cependant le suivant me donne une erreur:
SELECT field1
FROM table_1 a
LEFT JOIN table_2 b
ON a.field1=b.field2
ORA-12054: impossible de définir la validation de rafraîchissement de l'attribut de la vue matérialisée
Cependant, les travaux suivants:
SELECT field1
FROM table_1 a, table_2 b
WHERE a.field1=b.field2
Quelqu'un a une idée pourquoi cela se passe.
Thx pour l'aide
source d'informationauteur ddallala
Vous devez vous connecter pour publier un commentaire.
Il y a deux conditions qui ne sont pas satisfaits de faire que de la vue matérialisée de rafraîchissement rapide. La première est que vous ne spécifiez pas le rowid les colonnes de toutes les tables concernées. Et le deuxième est un sans-papiers restriction: ANSI-les jointures ne sont pas pris en charge.
Voici un exemple avec DEPT être table_1, alias et EMP être table_2, alias b:
Qui imite votre situation. Tout d'abord ajouter le rowid:
Encore il ne peut pas rafraîchissement rapide, en raison de l'ANSI rejoint. La conversion à l'ancienne syntaxe de jointure externe:
Et de prouver que cela fonctionne:
De l'ANSI-syntaxe de jointure restriction est mentionné dans le point 6 de ce billet de blog.
Ce qui concerne,
Rob.
Puisque c'est un vieux post; aucun n'a mentionné solution complète.
dans
WHERE
clause, juste les jointures; on ne peut avoirCASE
/DECODE
étatsSELECT
clause;GROUP BY
,SUM()
,COUNT()
et tels sont permis, bien qu'.Dans l'exemple ci-dessus l'exemple de la requête ne fonctionne que si la clé primaire est créé sur le département de la table dept colonne id.
Suivre les instructions suivantes pour DBMS_MVIEW.EXPLAIN_MVIEW travail:
http://www.sqlsnippets.com/en/topic-12884.html
Capable de:
REFRESH_COMPLETE
Pas Capables de:
REFRESH_FAST
REFRESH_FAST_AFTER_INSERT
inline vue ou sous-requête dans la liste non pris en charge pour ce type MV
REFRESH_FAST_AFTER_INSERT
inline vue ou sous-requête dans la liste non pris en charge pour ce type MV
REFRESH_FAST_AFTER_INSERT
vue ou sous-requête dans la liste
REFRESH_FAST_AFTER_ONETAB_DML
voir la raison pourquoi REFRESH_FAST_AFTER_INSERT est désactivé
MV_REPORT
REFRESH_FAST_AFTER_ANY_DML
voir la raison pourquoi REFRESH_FAST_AFTER_ONETAB_DML est désactivé