habe eine materialisierte View in ORACLE 9i erstellt. Die view ist eine union select-view, eine Aktualisierung on Commit ist nicht möglich.
Änderungen werden nur an den Basistabellen gemacht, über die view wird nichts geändert. Damit bei Änderungen der Básistabellen die view aktualisiert wird, habe ich einen Trigger für die Basistabelle erstellt, der folgende Prozedur aufruft:
CREATE OR REPLACE PROCEDURE „SCOTT“.„FIRMEN_UPDATE“ as
pragma AUTONOMOUS_TRANSACTION;
begin
dbms_snapshot.refresh(‚SCOTT.FIRMEN‘);
end;
Leider wird nun erst die Prozedur ausgeführt und dann die Basistabelle geändert, Änderungen werden also dabei nicht in die view übernommen.
Gibt es vielleicht eine Lösung, die die view bei Änderung der Basistabelle aktualisiert?
Damit bei Änderungen der
Básistabellen die view aktualisiert wird, habe ich einen
Trigger für die Basistabelle erstellt, der folgende Prozedur
aufruft:
Wie legst du denn den Trigger an? (after each row, after update, …)
Also wenn ich versuche, die view auf ON COMMIT umzustellen, erhalte ich folgende Fehlermeldung:
ORA-12054: Refresh-Attribut ON COMMIT kann für Materialized View nicht festgelegt werden
wohl weil die view ein ‚Union select‘ ist, Funktionen, Bedingungen enthält,…
Den Trigger habe ich ‚After Update, Insert, Delete‘ gesetzt, aber der wird eben erst nach der Prozedur ausgeführt und commit innerhalb des Triggers ist in ORACLE wohl nicht möglich.