darkie_max
Grünschnabel
Hi,
ich mach mir grad nen Trigger um Logs über mehrere Tabellen hinweg zu erstellen d.h. wenn er in einen der angegebenen Tabellen etwas ändert, soll er die Aktion sowie den Tabellennamen in einer LogsTabelle ablegen.
Mit einer Tabelle ist das ja einfach.... da schreib ich den Trigger für die Tabelle und frag in ner if-clausel nach INSERTING, UPDATING..... und mache danach einen dementsprechenden Eintrag für die LogTabelle.
Allerdings will ich ja mit einem Trigger mehrere Tabellen erschlagen und dafür also nur einen Trigger (statt für jede Tabelle einen) erstellen. Bei dem ist dann aber natürlich das Prob, dass ich nicht weiß wie er unterscheiden soll welche Tabelle gerade UPGEDATED.... wurde.
Beispiel für eine Tabelle:
CREATE OR REPLACE TRIGGER LogIt
AFTER DELETE OR UPDATE OR INSERT ON TestTabelle
FOR EACH ROW
DECLARE
action VARCHAR2(31);
ort VARCHAR2(31);
BEGIN
ort := TestTabelle;
IF DELETING THEN action := 'delete';
ELSIF UPDATING THEN action := 'update';
ELSIF INSERTING THEN action := 'insert';
ELSE action := 'unknown';
END IF;
INSERT INTO LogTab VALUES(PK_Generator.NEXTVAL,SYSDATE,action,ort);
END;
Also eigentlich brauch ich genau das gleiche für mehrere Tabellen, wobei "ort" dynamsich auf den Tabellennamen gesetzt werden soll.
Hat jemand ne Idee?
Gruß
Maxi
ich mach mir grad nen Trigger um Logs über mehrere Tabellen hinweg zu erstellen d.h. wenn er in einen der angegebenen Tabellen etwas ändert, soll er die Aktion sowie den Tabellennamen in einer LogsTabelle ablegen.
Mit einer Tabelle ist das ja einfach.... da schreib ich den Trigger für die Tabelle und frag in ner if-clausel nach INSERTING, UPDATING..... und mache danach einen dementsprechenden Eintrag für die LogTabelle.
Allerdings will ich ja mit einem Trigger mehrere Tabellen erschlagen und dafür also nur einen Trigger (statt für jede Tabelle einen) erstellen. Bei dem ist dann aber natürlich das Prob, dass ich nicht weiß wie er unterscheiden soll welche Tabelle gerade UPGEDATED.... wurde.
Beispiel für eine Tabelle:
CREATE OR REPLACE TRIGGER LogIt
AFTER DELETE OR UPDATE OR INSERT ON TestTabelle
FOR EACH ROW
DECLARE
action VARCHAR2(31);
ort VARCHAR2(31);
BEGIN
ort := TestTabelle;
IF DELETING THEN action := 'delete';
ELSIF UPDATING THEN action := 'update';
ELSIF INSERTING THEN action := 'insert';
ELSE action := 'unknown';
END IF;
INSERT INTO LogTab VALUES(PK_Generator.NEXTVAL,SYSDATE,action,ort);
END;
Also eigentlich brauch ich genau das gleiche für mehrere Tabellen, wobei "ort" dynamsich auf den Tabellennamen gesetzt werden soll.
Hat jemand ne Idee?
Gruß
Maxi