IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Datenbanken - Grundlagen von Triggern



Grundlagen von Triggern

Trigger sind eine Möglichkeit zur Ausführung komplexer Logik innerhalb eines Datenbanksystems. Dieser Artikel geht auf die Grundlagen von Triggern ein und beschreibt die wichtigsten theoretischen Aspekte von Triggern.


Autor: Patrick Bucher (paedubucher)
Datum: 28-05-2007, 18:58:42
Referenzen: Wikipedia: Trigger, diverse Schulunterlagen der Berufsschule Sursee
Schwierigkeit: Fortgeschrittene
Ansichten: 6041x
Rating: 4 (1x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Trigger sind Funktionen, die das Datenbanksystem automatisch beim Eintreffen von definierten Ereignissen ausführt. Ein Trigger besteht aus einer oder mehreren SQL-Anweisungen und gehört immer zu genau einer Tabelle. Pro Tabelle können jedoch mehrere Trigger existieren.

Verwendung

Unterstützt ein Datenbanksystem zwar Trigger, jedoch keine automatische Lösch- oder Aktualisierungsweitergabe, so kann letzteres mit Triggern gelöst werden.

  • Zur Wahrung der Datenintegrität
    • Operationen jenseits von einfachen Lösch- oder Aktualisierungsweitergaben
  • Aktualisierung von berechneten Feldern
    • Summen
    • Durchschnittswerte
  • Zur Auslösung von externen Aktionen
    • Versand von E-Mails
    • Anstoss einer Datenbanksicherung

Auslöser

Ein Trigger gehört immer zu einer Tabelle und reagiert auf bestimmte Ereignisse:

  • INSERT (Einfügen von Datensätzen)
  • UPDATE (Aktualisierung von Datensätzen)
  • DELETE (Löschung von Datensätzen)

Pro Tabelle und Ereignis können beliebig viele Trigger definiert werden.

Bei der Ausführung von mehreren Triggern eines bestimmten Ereignisses ist keine bestimmte Sequenz für deren Ausführung festgelegt, man kann also nie wissen, welcher Trigger als erstes, zweites oder als letztes ausgeführt wird. Somit sollte man Operationen, die bestimmte vorhergehende Operationen erfordern, immer im gleichen Trigger definieren.

Schattentabellen

Bevor änderungen an einem Datenbestand persistent in der Datenbank abgespeichert werden, durchlaufen die zu mutierenden Daten zunächst noch sog. Schattentabellen. Jede Tabelle hat zwei Schattentabellen; eine für Lösch- und eine für Einfügevorgänge. Sobald eine Transaktion mit COMMIT bestätigt wird, gelangen die Daten von den Schattentabellen in die eigentliche Tabelle, die Schattentabellen werden wieder geleert. Im Falle eines ROLLBACK werden die Daten nur aus den Schattentabellen gelöscht, ohne an der eigentlichen Tabelle etwas zu verändern.

Der Einfügevorgang

In eine Tabelle soll ein Datensatz eingefügt werden. Der Datensatz wird zunächst in die Schattentabelle inserted der eigentlichen Tabelle eingefügt.

Innerhalb des Triggers kann man nun über die Tabelle inserted sämtliche Daten ermitteln, die mit der Transaktion in die eigentliche Tabelle eingefügt werden sollen. Innerhalb des Triggers kann nun entscheiden werden, ob die Daten definitiv eingefügt werden sollen (COMMIT), oder ob die änderungen rückgängig gemacht werden sollen (ROLLBACK).

Der Löschvorgang

Aus einer Tabelle soll ein Datensatz gelöscht werden. Der Datensatz wird zunächst in die Schattentabelle deleted der eigentlichen Tabelle eingefügt.

Innerhalb des Triggers kann man nun über die Tabelle deleted sämtliche Daten ermitteln, die mit der Transaktion aus der eigentlichen Tabelle gelöscht werden sollen. Innerhalb des Triggers kann nun entscheiden werden, ob die Daten definitiv gelöscht werden sollen (COMMIT), oder ob die änderungen rückgängig gemacht werden sollen (ROLLBACK).

Der Aktualisierungsvorgang

Beim Aktualisierungsvorgang werden beide Schattentabellen (inserted und deleted) benötigt. Der alte Stand der geänderten Datensätze wird dabei in die Tabelle deleted geschrieben, die geänderten Datensätze werden vor dem eigentlichen Aktualisierung in die Schattentabelle inserted geschrieben.

Auch hier kann der Trigger entscheiden, ob die änderungen an der eigentlichen Tabelle definitiv übernommen (COMMIT) oder rückgängig gemacht werden sollen (ROLLBACK).



[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04511
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06248
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0