<< >> Up Title Contents Index

Trigger

Im Gegensatz zu DB-Prozeduren, die aus einer Anwendungsprogrammiersprache explizit aufgerufen werden müssen, starten Trigger implizit nach Ausführung einer INSERT-, UPDATE- oder DELETE-Anweisung auf einer Basistabelle.

Definiert man für eine Basistabelle z. B. einen Trigger, der bei jedem INSERT angestoßen werden soll, so werden automatisch bei jedem neuen Eintrag in diese Tabelle die innerhalb des Triggers definierten Aktionen ausgeführt. Die Ausführung eines Triggers kann von bestimmten Vorbedingungen abhängig gemacht werden. UPDATE-Trigger können auch nur für die Änderung einzelner Spalten formuliert werden.

Ein sinnvoller Anwendungsfall für Trigger ist es, einen Wert vor dem Einfügen über seine Wertebereichsdefinition hinaus auf seine Eignung für den Eintrag hin zu überprüfen. Beliebig komplexe Überprüfungen, die auch Bezug auf andere Tabellen nehmen, können im Hintergrund angestoßen werden.

Weiterhin können Trigger abgeleitete Datenbank-Modifikationen für diese oder eine andere Zeile veranlassen oder auch komplizierte Regeln zum Zugriffsschutz beinhalten.

Vor einem UPDATE oder DELETE kann der alte Wert beispielsweise für statistische Zwecke in einer weiteren Tabelle gerettet werden, um dort einer späteren Verarbeitung unterzogen zu werden.

Aus diesen Beispielen wird deutlich, daß man bei der Programmierung eines Triggers sowohl auf den neuen als auch den alten Spaltenwert zugreifen kann. Dies wird im Triggerprogramm durch die Schlüsselworte NEW und OLD gekennzeichnet.

Die Definition von Triggern erfolgt mittels der Sprache ADABASIC. Im wesentlichen sind dazu zwei Schritte erforderlich.

Zum einen wird in einem durch das Schlüsselwort TRIGGER gekennzeichneten ADABASIC-Programm festgelegt, welche Aktionen bei Aufruf eines Triggers gestartet werden sollen. Dabei können die von ADABASIC bereitgestellten Kontrollstrukturen verwendet werden, wie dies auch für DB-Prozeduren möglich ist, und es gelten die gleichen Einschränkungen (vgl. hierzu ADABASIC-Handbuch).

Im zweiten Schritt muß der Trigger einer Basistabelle und gegebenenfalls einzelnen Spalten sowie einer Aktion wie INSERT, UPDATE oder DELETE zugeordnet werden. Die Übergabe von Spaltenwerten an den Trigger wird über die Definition von formalen Parametern geregelt.

Dafür bietet die ADABASIC-Werkbank ein Eingabemenü an, das die erforderlichen Angaben abfragt. Weiterhin können hier Bedingungen angegeben werden, die die Ausführung eines Triggers einschränken. Zum Beispiel kann hier festgelegt werden, daß der Trigger nur gestartet wird, wenn der Eingabewert größer als ein vorgegebener Wert ist.

Um einen Trigger für Tabellen definieren zu können, muß man der Eigentümer der Tabelle sein und das Recht besitzen, die innerhalb des Triggers definierten Aktionen auszuführen. Es gelten hier die gleichen Regeln der Zugriffsberechtigung wie für DB-Prozeduren.

Schlägt die Ausführung eines Triggers fehl, wird auch die dazugehörige INSERT-, UPDATE- oder DELETE-Anweisung durch ein Rollback zurückgesetzt.

Ein Trigger kann implizit weitere Trigger und explizit auch DB-Prozeduren aufrufen. Wie eine DB-Prozedur läuft auch ein Trigger direkt im Adreßraum des Datenbankkerns ab, was den Vorteil hat, daß Kommunikationsaufwände insbesondere in Client-Server-Konfigurationen eingespart werden.


<< >> Up Title Contents Index