tout de meme disposer d'une vue materialisée rafraichie dés qu'une table sous jacente est COMMITée
-----------------------------------------------------------------------------
bonsoir,

J'essaye de créer des vues materialisées qui doivent dans mon cas etre rafraichies dés que/si une table sous jacente est modifiée

J'y parviens pour des vues materialisées créées à partir de selections simples (avec une clef primaire, sans jointure et un filtre simple)
et avec l'option REFRESH ON COMMIT

Mais lorsque je veux créer des vues materialisées à partir de selections plus complexes, par exemple avec des jointures ou sans clef primaire dans le résultat de la sélection, j'obtiens l'erreur

Citation:
ORA-12054: impossible de définir l'attribut de régénération ON COMMIT pour la vue matérialisée
dans les docs, je lis qu'il y a des restrictions et des propositions avec des LOG utiles pour un rafraichissement FAST, mais cela ne concerne pas mon cas de figure

Auriez vous des précisions ?

Voici un exemple en echec pour moi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
CREATE MATERIALIZED VIEW schema.mv_tab
TABLESPACE schema_dta
REFRESH ON COMMIT
AS
SELECT p.lib_1 , f.lib_2
FROM tab1 p , tab2 f
WHERE  p.id_1 = f.id_2(+)
AND p.txt_1 = 'texte'
ORDER BY p.lib_1 ASC , f.lib_2 ASC;
J'arrive à créer cette vue materialisée avec REFRESH COMPLETE mais alors une modification de la table sous jacente tab1 ou tab2 et un COMMIT ne provoquent pas le rafraichissement de mv_tab

La création de LOG n'est pas possible pour mes tables si elles sont organisées en index
Le commande suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
CREATE MATERIALIZED VIEW LOG ON tab1 WITH ROWID ;
provoque l'erreur :
ORA-12041: impossible d'enregistrer les ROWID associés à la table organisée en index tab1
Merci d'avance pour votre regard d'expert