Was ist ein Instead of-trigger?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Angenommen, du hast zu einer Tabelle eine View angelegt. Wenn sie sich ändert (durch Queries wie DELETE, INSERT oder UPDATE), könnte das Datenbanksystem diese Queries intern so verarbeiten, sodass die Originaltabelle entsprechend verändert wird.

Nun wäre es aber ebenfalls möglich, eine eigene Prozedur zu schreiben, die beispielsweise bei einem DELETE ausgeführt wird. Diese würde mit einem Trigger registriert werden.

Mit dem INSTEAD-OF-TRIGGER kann man die Standardoperation überschreiben, die normalerweise mit einem DELETE (o.ä.) aufgerufen wird. Mit einem AFTER- oder BEFORE-Trigger wiederum könntest du Prozeduren erstellen, die das System nach / vor der jeweiligen Standardoperation ausführt.

Zwei praktische Beispiele:

  1. Du hast eine Tabelle, die die Songliste für eine Party repräsentiert und dafür eine View. Wenn sich etwas ändert (z.B. neue Songs hinzugefügt oder bestehende Songs entfernt werden), sollen diese Änderungen erst einmal in eine separate Tabelle wandern, um von der Gastgeberin abgesegnet zu werden. Für die Umsetzung könnte man demzufolge INSTEAD-OF-TRIGGER für INSERT und DELETE schreiben, die die Änderungen an die separate Tabelle übertragen.
  2. Du hast eine View, die Wetterdaten anzeigt (Niederschlag, Temperatur, u.ä.). Wenn sich ein Wert ändert (UPDATE), sollen im Anschluss andere bestehende Daten überprüft und aktualisiert werden (z.B. eine Wahrscheinlichkeitsberechnung für bestimmte Wolkenbildungen, o.ä.). An der Stelle könnte ein AFTER-Trigger zum Einsatz kommen.