Hallöchen,
ich bräuchte mal eine kurze Hilfe, wie man am besten einen Trigger in
Oracle aufbaut.
Und zwar müßte der „feuern“, wenn die Spalte „BEZAHLT“ von „N“ in „Y“ geändert wird.
Die Tabelle, auf die der Trigger laufen soll ist ziemlich groß und es können durch einen anderen Prozess leicht mal 100 Datensätze in der Spalte „BEZAHLT“ geändert werden.
Hallöchen,
ich bräuchte mal eine kurze Hilfe, wie man am besten einen
Trigger in
Oracle aufbaut.
Und zwar müßte der „feuern“, wenn die Spalte „BEZAHLT“ von „N“
in „Y“ geändert wird.
Die Tabelle, auf die der Trigger laufen soll ist ziemlich groß
und es können durch einen anderen Prozess leicht mal 100
Datensätze in der Spalte „BEZAHLT“ geändert werden.
Hallo,
so gehts:
CREATE TRIGGER zahlen\_bitte
BEFORE
UPDATE OF bezahlt
ON ja\_wie\_heist\_die\_tabelle\_denn
FOR EACH ROW
WHEN (OLD.bezahlt != 'Y' AND :NEW.bezahlt = 'Y')
BEGIN
-- jetzt kommt die Prozedur
END;
/
Ich setze voraus, dass der Trigger NICHT feuern soll, wenn ein INSERT mit bezahlt = ‚Y‘ gemacht wird.
Hallo Peter,
das sieht genau so aus, wie ich das haben will, nur
leider bekomme ich einen Compilierungsfehler:
ORA-25000: invalid use of bind variable in trigger WHEN clause
Ich könnte die „WHEN“ Bedingung ja auch in Form einer
If-Anweisung in den Ausführungsblock schreiben. Aber hätte das Auswirkung auf die Laufzeit?
Gruß
Sina
so gehts:
CREATE TRIGGER zahlen_bitte
BEFORE
UPDATE OF bezahlt
ON ja_wie_heist_die_tabelle_denn
FOR EACH ROW
WHEN (OLD.bezahlt != ‚Y‘ AND :NEW.bezahlt = ‚Y‘)
BEGIN
– jetzt kommt die Prozedur
END;
/
Ich setze voraus, dass der Trigger NICHT feuern soll, wenn ein
INSERT mit bezahlt = ‚Y‘ gemacht wird.
dann solltest Du dir das Buch von Feuerstein: Oracle PL/SQL Programmierung (O’Reilley) anschaffen. Da steht so ziemlich alles über Oracle Prozeduren und Trigger drin.
Gruß
Peter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]