Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Oracle PL/SQL Grundkurs

Trigger erweitern

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
In diesem Video erweitert der Trainer das Trigger-Beispiel. Dabei lernen Sie, wie man über die Konstanten INSERTING, DELETING und UPDATING und auch über die PseudoRecords OLD und NEW differenziert auf das auslösende Ereignis reagieren kann.

Transkript

In diesem Video, werden wir unser Triggerbesipiel etwas erweitern, denn selbst der Simple DLM-Trigger erlaubt weitere Kniffe, auf die Sie in alltäglichen PL/SQL-Programm nicht verzichten können. Zunächst öffne ich wieder die Datei kap05_bmi_trigger. In unserem bisherigen minimal gehaltenen Beispiel, löst die Einfügung eines Datensatzes in die Tabelle messung den Simpel DML-Trigger aus. Es gibt auch die Möglichkeit, den Simple DML-Trigger so zu programmieren, dass er sowohl dann ausgelöst wird, wenn ein INSERT, ein DELETE oder auch ein UPDATE versucht wird. In dem Fall muss man, die zusätzlichen Schlüsselwörter über das Schlüsselwort OR miteinander verknüpfen. Ich schreibe hinter das INSERT ein OR. Dann eine Zeile darunter DELETE OR und dann auch ein UPDATE. Bei dem Schlüsselwort UPDATE gibt es noch eine Besonderheit, denn der bietet die Möglichkeit, das auslösende Ereignis auf bestimmte Spaltenfelder einzuschränken. Hierfür brauchen wir ein weiteres Schlüsselwort, nämlich OFF. Das setze ich jetzt hier dahinter, hinter das Schlüsselwort UPDATE. Und dahinter wiederum setzen wir den Namen des Spaltenfeldes, das von der Manipulation betroffen ist. Ich nehme jetzt mal gewicht. Für den Fall, dass das SQL-Statement, über das das Ereignis erfolgt, mehrere Datensätze gleichzeitig ändert, kann ich festlegen, ob der Ausführungsabschnitt des Triggers, nur ein Mal oder für jede einzelne Zeile wiederholt ausgelöst werden soll. Hierfür muss ich folgendes hinzufügen, und zwar hier drunter, muss ich dann hinzufügen FOR EACH ROW. Jetzt ist es natürlich so, dass man im Ausführungsabschnitt gerne auf die unterschiedlichen Auslöser reagieren möchte. Für diesen Zweck, bietet PL/SQL folgende Möglichkeit. Ich werde jetzt zunächst einen CASE-Ausdruck setzen und zwar hier, um zwischen den unterschiedlichen Fällen verzweigen zu können. Ich schreibe also CASE und hier unten werde ich den CASE wieder beenden. Für die Fallunterscheidung füge ich hinzu WHEN INSERTING THEN Das ganze kopiere ich jetzt mal. Es gibt nämlich auch DELETING für das Löschen und auch UPDATING Für die verschiedenen Fälle, muss ich hier natürlich auch eine andere Ausgabe reinschreiben. Und zwar, dort schreibe ich mal einfach nur INSERT rein. Hier DELETE. Und in UPDATING, einfach nur UPDATE. Weil ich hier oben, bei dem Ereignis-Update, aus Änderung des Spaltenfeldes gewicht eingeschränkt habe, kann ich mich auch hier unten auf diese Einschränkung beziehen. Hierfür füge ich den Namen des Spaltenfeldes in Klammern hinzu. Und zwar, kann ich hier hinschreiben UPDATING (None 'gewicht') Ich füge das hier auch im Kommentar noch mit rein, der ausgegeben werden soll, dass es sich lediglich um einer Änderung des Gewichts handelt. In so manchen Fallen möchte man bei einem Update, auch gerne auf die konkreten Änderungen reagieren. Zu diesem Zweck bietet PL/SQL sogenannte PseudoRecords an. Im PSEUDORECORDS: OLD steht der alte und im PSEUDORECORD: NEW der neue Datensatz drin. Deshalb kann ich nun in unserem Programm prüfen, ob sich das Gewicht bei der Manipulation erhöht oder verringert hat. Dies werde ich jetzt über einen IF-Ausdruck programmieren. Also IF: NEW und dann .gewicht : OLD.gewicht THEN dann werde ich hier noch etwas ausgeben, und zwar einfach nur erhoeht und dann setze ich noch ein ELSIF hinzu, wenn es kleiner ist, das neue Gewicht dann hat er sich verringert. Dann schließe ich den IF-Ausdruck mit END IF auch noch ab. Ich werde das Programm jetzt mal auch abspeichern. Notepad++ schließen. Und das Programm ausprobieren. Über star kap05_bmi_trigger, führe ich ja das SQL-Skript aus. Jetzt ist der Trigger erzeugt worden und wir können den Trigger mal testen. Hierfür setze ich jetzt ein SQL-Update ein. Und zwar schreibe ich update messungNone set gewicht ist gleich irgendwas, 77 Semikolon. Dann sehen Sie jetzt zwei Ausgaben und das liegt daran, dass wir in unserem Trigger über FOR EACH ROW festgelegt hatten, dass bei Änderungen, die mehr als eine Zeile betreffen, für jede Zeile der Ausführungsabschnitt ausgeführt werden soll. Da wir in der Tabelle messung, zwei Daten gleichzeitig abgeändert haben, wurde uns diese Meldung auch gleich zweimal ausgegeben. In diesem Video haben wir unser Triggerbeispiel erweitert. Und Sie haben gelernt, wie man über die Konstanten INSERTING, DELETING und UPDATING und über die PseudoRecords OLD und NEW differenziert reagieren kann.

Oracle PL/SQL Grundkurs

Entdecken Sie grundlegende Programmstrukuren, Stored Procedures und Functions in PL/SQL und sehen Sie, wie Sie auf Daten zugreifen können.

3 Std. 58 min (32 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!