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.

SQL Server 2016: Triggers, Stored Procedures und Funktionen

Beispiel eines DML-Triggers

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Dieses Beispiel zeigt das Zusammenspiel von Cursor, Fehlerbehandlung und einigen anderen Features in Triggern.
03:19

Transkript

Auch zum Schluss des Kapitels über Trigger ein etwas umfangreicheres Beispiel. Im Skript wird wie üblich erstmal eine Datenbank, eine Tabelle und ein paar Zeilen angelegt. Dann kommen wir zu dem Trigger. Der Trigger ist für Updates, das heißt FOR UPDATE hier, und benutzt Cursor um die INSERTED-Tabelle zu durchlaufen. Das tut er entsprechend in einem TRY CATH-Block, falls einen Fehler auftritt. Das heißt, hier deklariere ich den Cursor, hier deklariere ich nochmal eine Variable, die ich aus dem Cursor auslesen möchte. In dem Fall ist es nur die ID. Ich öffne den Cursor und versuche mittels FETCH NEXT die Position der aktuellen Zeile auf die erste Zeile zu richten. Es kann sein, dass es nicht funktioniert, also schlicht und ergreifend überhaupt keine Zeile vorhanden ist, zumindest rein technisch wäre das möglich. Der Trigger wurde gar nicht ausgelöst, insofern muss ich das nicht testen, sondern ich habe hier eine Schleife, die sagt, solange @@FATCH_STATUS = 0 ist, gibt es noch eine Zeile. Das heißt, das wird beim ersten Mal auf jeden Fall erfolgreich sein. Dann bin ich hier innerhalb der Schleife. Ich gebe dann entsprechend die ID aus, weil diese Anweisung hat mir genau die ID aus dem Cursor in die Variable geschoben. Mit der zweiten FATCH NEXT-Anweisung versuche ich dann jeweils in die nächste Zeile zu kommen. Das gilt solange bis ich alle Zeilen durchlaufen habe. Entsprechend gehe ich dann hin und schließe den Cursor und dealokiere den Cursor. Im CATCH-Block mache ich das Gleiche. Falls ein Fehler gekommen ist, kann ich hier sagen CLOSE Cursor, DEALLOCATE Cursor und dann hier nochmal mit einem SELECT-Statement entsprechend die Details zu dem Fehler ausgeben, bevor ich den selber Fehler nochmal nach oben an den Aufrufer reiche. Wenn ich das laufen lasse, kann ich hier unten mit zwei UPDATE-Anweisungen, die erste ändert eine, die zweite ändert zwei Zeilen, entsprechend das Ganze zum Laufen bringen, ich drücke einfach auf F5 und das Ergebnis, was ausgegeben wird, ist entsprechend geändert wurde Zeile mit ID1, was vermutlich richtig ist, wir können es gleich nochmal angucken, und geändert wurde mit der Zeile-ID 1 und 2. hier an der Stelle, wo ich UPDATE TOP (2), Ich mache mal ein SELECT auf die Tabelle, Sie werden sehen, die IDs sind der Reihe nach, sind nur 6 Zeilen, schön von 1 bis 6 durchnummeriert. Das heißt, die beiden wurden aktualisiert. Wenn ich das Ganze jetzt nochmal hier bei 2, 4 ändere und das Ganze laufen lasse, habe ich hier das Ergebnis das ist das Ergebnis des SELECT-Statements und hier die Message 1, 2, 3, 4, das heißt, die vier Zeilen wurden geändert. Mit dem Beispiel sehen Sie, dass Sie auch komplexere Programmierungen, wie zum Beispiel Cursor verwenden können um in Triggern das zu erreichen, was Sie entsprechend erreichen wollen. Wichtig wäre vielleicht der Hinweis, dass Sie in dem Trigger jetzt nicht wirklich aufwändigen Code laufen lassen sollten. Letztendlich wird die DML-Anweisung erst dann nämlich beendet, wenn auch der Cursor gelaufen ist und wenn der 20 Minuten brauchen würde für irgendwas, würde auch entsprechend das DML-Statement so lange warten, bis der Cursor entweder regulär oder schlicht durch einen Fehler beendet würde.

SQL Server 2016: Triggers, Stored Procedures und Funktionen

Nutzen Sie in SQL Server Trigger, gespeicherte Prozeduren, Late Binding, Fehlerbehandlung sowie Scalar- und Tabellenwertfunktionen.

3 Std. 12 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:08.08.2016

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!