15.05.2002

SQL - Variablen

Als aller Erstes werden Variablen definiert. Dazu nimmt man DECLARE @VARIABLE. Diese Variablen sind nur lokale Variablen und sterben, sofern der Prozess abgelaufen ist. Globale Variablen bleiben erhalten und werden mit @@Variable gekennzeichnet. Diese sollte man im Gegensatz zu lokalen Variablen am Ende wieder auf NULL setzen. Der Variable wird ein Datentyp zugewiesen: DECLARE @VARIABLE INT. Der Inhalt wird mit SET bestimmt: SET @VARIABLE = 3. Eine Ablaufsteuerung lässt sich einfach mit einer WHILE-Schleife aufbauen. Dazu umschliesst man die Befehlsreihe mit BEGIN und END. Mit dem Befehl BREAK kann man die jeweils innerste Schleife beenden. Mit CONTINUE kann man WHILE-Schleifen starten. Mit GOTO kann man zu Sprungmarken springen. Diese werden wie in einer Batch angegeben mit einem folgenden Doppelpunkt. IF und ELSE sind die Wenn-Dann-Bedingungen. RETURN ist ein fester Abbruch einer Schleife. Mit WAITFOR kann ich eine Zeitspanne oder Uhrzeit angeben, bis wann die Schleife wartet. Diese Möglichkeit sollte man aber nicht so oft nutzen, wenn ich eine Prozedur über mehrere Tage laufen lassen möchte, weil diese dann immer mit im Betrieb läft. Mit WHILE gebe ich eine Schleife bis zum nächsten BREAK, CONTINUE oder END vor.

Trigger sind notwendig, um Veränderungen an andere Tabellen und Spalten weiterzugeben und zu dokumentieren. Der Sinn ist unter anderem, denormalisierte Tabellen konsistent zu halten. Ebenfalls kann man nicht identische Werte verschiedener Tabellen prüfen. Ein weiteres Einsatzgebiet sind benutzerdefinierte Meldungen. Im Gegensatz zu SQL-Prozeduren benötigen wir nicht das Administrationsrecht, um Trigger auszulösen. Dieser kann übrigens auch mehrere Tabellen verarbeiten. Allerdings sind temporäre Tabellen davon ausgeschlossen.

Triggerklassen

Es gibt zwei Triggerklassen: INSTEAD OF (anstelle) und AFTER (danach). Bei INSTEAD OF wird eine Veränderung nicht tatsächlich auf den Daten der Tabelle ausgeführt, sondern stattdessen etwas anderes. Zum Beispiel eine Meldung an den Administrator und die Ausführung der Änderung in einer Zweittabelle und zusätzlich auch auf Sichten . Ebenfalls ist nur einer pro Aktion zulässig; während der AFTER-Trigger Änderungen nur auf einer Tabelle zulässt, gibt es hier auch eine Ausführungsreihenfolge. Zudem sind der erste und der letzte Trigger der Reihenfolge jeweils bestimmbar. Eine Gemeinsamkeit zwischen beiden Triggerarten ist, dass sie bis zu 32 Ebenen verschachtelbar sind. Mit Triggern lassen sich folgende Massnahmen ausführen: DELETE, UPDATE, INSERT.