>> Inhaltsverzeichnis >> Artikel

Element Trigger

  ELEMENT trigger (#PCDATA)
  ATTRIBUTE
       name        string
       dbms        string
       on          string
       insert      bool
       update      bool
       delete      bool
  
Attribute
Attribut Typ Pflicht Default Beschreibung
name string - n/a Ein eindeutiger Name welcher diesen Trigger identifiziert. Sollte kleingeschrieben und ein valider XML-, SQL-Bezeichner sein.
dbms string - generic Der Name des Ziel-DBMS. Der Wert "generic" bedeutet, dass die Definition für jedes DBMS zutreffend ist. Gewöhnlich wird das als Rückfalloption für DBMS verwendet, an welche Sie entweder beim Erstellen der Datenbankstruktur noch nicht gedacht haben, oder welche das fragliche Feature nicht unterstützen.
on string - before
before
Wird ausgelöst BEVOR die Anweisung ausgeführt wird.
after
Wird ausgelöst NACHDEM die Anweisung oder Transaktion erfolgreich ausgeführt wurde. Es wird nicht ausgelöst, falls die Anweisung einen Fehler verursacht hat.
instead
Wird ausgelöst ANSTATT der Anweisung. Die Anweisung selbst wird nicht ausgeführt. Diese Option wird nicht von allen DBMS unterstützt. Allerdings: sie kann bei Bedarf (mit einigen Einschränkungen) unter Verwendung von PHP-Code emuliert werden.
insert bool - no auslösen bei Insert-Anweisungen
update bool - no auslösen bei Update-Anweisungen
delete bool - no auslösen bei Delete-Anweisungen
Beschreibung

Trigger sind ein Feature von Datenbanksystemen, welches es erlaubt, auf bestimmte Datenbankereignisse mit der Ausführung von Code zu reagieren. Trigger werden durch Insert-, Update- oder Delete-Anweisungen, oder eine Kombination dieser, ausgelöst. Sie werden entweder vor (before), nachdem (after) oder anstatt (instead) der Anweisung ausgeführt. Nach dem Auslösen eines Triggers, wird der angegebene Code durch die Datenbank ausgeführt.

Die Syntax der Implementierung des Triggers hängt jedoch stark vom gewählten DBMS ab. Nicht alle DBMS unterstützen alle Features. Zum Beispiel: unterstützen nicht alle DBMS Trigger, die anstatt (instead) einer Anweisung ausgeführt werden und diese ersetzen.

Beachten Sie, dass ein Trigger eine benutzerdefinierte Funktion impliziert. Einige DBMS verlangen daher, dass diese Funktion explizit erzeugt und für den Trigger nur der Name der Funktion angeben wird. Andere DBMS erlauben, dass Sie den Funktionscode zusammen mit dem Trigger angeben.

Implementierung

Wenn ein Trigger eine Funktionalität verwendet, die durch das gewählte DBMS nicht unterstützt wird, wird dieses beim Versuch den Trigger zu erstellen einen Fehler melden. Die Implementierung selbst braucht dies nicht zu prüfen.

Trigger, welche die DBMS-Einstellung "generic" verwenden, müssen emuliert werden. In diesem Fall muss der Code durch die XDDL-kompatible Software, anstatt durch die Datenbank, ausgeführt werden. Die Implementierung kann die erforderliche Syntax für den Code selbst festlegen. Für diesen Fall wird empfohlen, dass das Attribut Code für derartige Trigger beschränkt wird auf gültige Callbacks (Funktions- oder Methodennamen). Das Yana Framework verlangt, dass das Attribut Code für emulierte Trigger ein gültiger Name einer nutzerdefinierten PHP-Funktion sein muss. Nähere Informationen zu diesem Thema finden Sie auch im Handbuch zur Datenbank-Schnittstelle.

Autor: Thomas Meyer, www.yanaframework.net