Ein Auslöser (Trigger) definiert eine Reihe von Aktionen, die in Verbindung mit bzw. ausgelöst durch eine Anweisung INSERT, UPDATE oder DELETE für eine angegebene Basistabelle bzw. die typisierte Tabelle ausgeführt werden. Auslöser können beispielsweise zu folgenden Aktionen verwendet werden:
Auslöser können nicht mit Kurznamen verwendet werden.
Auslöser können zur Unterstützung allgemeiner Formen der Datenintegrität und Geschäftsregeln verwendet werden. Zum Beispiel kann ein Auslöser die Kreditgrenze eines Kunden überprüfen, bevor eine Bestellung entgegengenommen oder eine Tabelle mit Übersichtsdaten aktualisiert wird.
Die Vorteile der Verwendung von Auslösern lassen sich wie folgt beschreiben:
Gehen Sie wie folgt vor, um mit der Steuerzentrale einen Auslöser zu
erstellen:
|
Geben Sie in der Befehlszeile folgendes ein, um einen Auslöser zu erstellen:
CREATE TRIGGER <name> <aktion> ON <tabellenname> <operation> <ausgelöste_aktion>
Mit der folgenden SQL-Anweisung wird ein Auslöser erstellt, der die Anzahl der Mitarbeiter automatisch erhöht, wenn eine neue Person angestellt wird, indem zum Wert in der Spalte für die Anzahl der Mitarbeiter (NBEMP) in der Tabelle COMPANY_STATS jedesmal der Wert 1 addiert wird, wenn der Tabelle EMPLOYEE eine Zeile hinzugefügt wird.
CREATE TRIGGER NEW_HIRED AFTER INSERT ON EMPLOYEE FOR EACH ROW MODE DB2SQL UPDATE COMPANY_STATS SET NBEMP = NBEMP+1;
Eine Auslöserdefinition kann eine oder mehrere der folgenden SQL-Anweisungen enthalten: Anweisung INSERT, gezielte Anweisung UPDATE, gezielte Anweisung DELETE, Gesamtauswahlen, Anweisung SET übergangsvariable und Anweisung SIGNAL SQLSTATE. Der Auslöser kann vor oder nach der Anweisung INSERT, UPDATE bzw. DELETE, auf die er bezogen ist, aktiviert werden. Vollständige Syntaxinformationen zur Anweisung CREATE TRIGGER finden Sie im Handbuch SQL Reference. Informationen zum Erstellen und Verwenden von Auslösern finden Sie im Handbuch Application Development Guide.
Anmerkung: | Wenn es sich bei dem Auslöser um einen Vorauslöser (BEFORE) handelt, kann als von der ausgelösten Aktion angegebener Spaltenname keine generierte Spalte außer der Identitätsspalte angegeben werden. Dies bedeutet, daß der generierte Identitätswert für Vorauslöser sichtbar ist. |
Alle Abhängigkeiten eines Auslösers von einem anderen Objekt werden im Katalog SYSCAT.TRIGDEP aufgezeichnet. Ein Auslöser kann von vielen Objekten abhängig sein. Diese Objekte und die abhängigen Auslöser werden im Handbuch SQL Reference im Abschnitt zur Anweisung DROP detailliert erläutert.
Wenn eines dieser Objekte gelöscht wird, wird der Auslöser außer Funktion gesetzt, aber die Definition bleibt im Katalog erhalten. Um einen solchen Auslöser wieder zu aktivieren, müssen Sie die entsprechende Definition aus dem Katalog abrufen und eine neue Anweisung CREATE TRIGGER ausführen.
Wenn ein Auslöser gelöscht wird (DROP), wird die entsprechende Beschreibung aus der Katalogsicht SYSCAT.TRIGGERS gelöscht, und es werden alle zugehörigen Einträge für Abhängigkeiten aus der Katalogsicht SYSCAT.TRIGDEP gelöscht. Alle Pakete mit Abhängigkeiten über Anweisungen UPDATE, INSERT oder DELETE für den Auslöser, werden ungültig gemacht.
Wenn das abhängige Objekt eine Sicht ist und außer Funktion gesetzt wird, wird auch der Auslöser als unbrauchbar markiert. Alle Pakete, die von Auslösern abhängig sind, die als unbrauchbar markiert wurden, werden ungültig gemacht. (Weitere Informationen finden Sie in Anweisungsabhängigkeiten beim Ändern von Objekten.)