Trigger in Oracle 9i erstellen

viking2001a

Grünschnabel
Hallo,
ich möchte etwas mit Triggern unter Oracle testen.
Ansatz:
Ich habe eine Oracle Datenbank 9i mit einem Schema "Martin" und möchte zuächst mal probieren, wie ich bei einem Insert und update einer Tabelle "Mueller" des Schemas "Martin" dieser Datensatz sofort in die Tabelle "Schmied" im Schema "Martin" geschrieben werden kann.
Die Tabelle "Schmied" ist eine Kopie der Tabelle "Martin".
Beide Tabellen sollen 10 Spalten haben.
A,B,C,D,E,F,G,H,I,J

Wie geht so was?

Wenn ich den Assisten benutze, dann bin ich sehr schnell am Ende, da ich die Zieltabelle nicht angeben kann.


Im Anschluss daran kommt dann die Frage, wie dies zu modifizieren wäre, wenn nur dann ein Insert oder Update erfolgen soll, wenn in der Tabelle "Martin" in der Spalte "E" den Wert "ABC" hat.

Wer kann da helfen?

Gruß viking
 
Da müßtest du etwa folgendes tun:
Code:
CREATE OR REPLACE TRIGGER DeinTriggerName AFTER INSERT OR UPDATE  ON Martin.Mueller 
FOR EACH ROW
--- hier dein Code
INSERT INTO Martin.Schmid (A,B,C,D,E,F,G,H,I,J) VALUES (:NEW.A, :NEW.B, :NEW.C, :NEW.D, :NEW.E, :NEW.F, :NEW.G, :NEW.H, :NEW.I, :NEW.J);

Dein Trigger arbeitet dann nach jedem INSERT oder UPDATE der Tabelle Martin.Mueller, und zwar für jeden einzelnen Eintrag, wenn du beispielsweise mit einem Update mehrere Zeilen auf einmal änderst.
Der Insert-Befehl wird aufgerufen und trägt die neuen Werte :)NEW.spaltenname) in die Tabelle Martin.Schmid ein.
Beachte dabei: So ein Trigger kann zu einer Performance-Bremse werden (FOR EACH ROW)

Hoffe das hilft weiter. Mehr findest du beispielsweise hier: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7004.htm#SQLRF01405
Dort ist zwar die Syntax von 10.2 erläutert, das obige Beispiel funktioniert aber bspw. auch in der 7er Version.
 
Zurück