Ein Trigger (deutsch: Auslöser) ist eine gespeicherte Prozedur, die das Datenbanksystem automatisch ausführt, sobald ein definiertes Ereignis eintritt – etwa ein INSERT, UPDATE oder DELETE auf einer Tabelle.
Typische Einsatzfälle
- Audit-Log: Jede Änderung an einer Tabelle wird mit Zeitstempel und Benutzer protokolliert.
- Automatische Pflege: Felder wie
updated_atoder Zählerstände werden ohne Anwendungscode aktualisiert. - Integrität: Plausibilitätsprüfungen und Kaskadierungen, die über normale Constraints hinausgehen.
- Replikation: Änderungen werden automatisch in eine Replikations- oder Audit-Tabelle geschrieben.
Beispiel in MySQL
CREATE TRIGGER audit_kunden
AFTER UPDATE ON kunden
FOR EACH ROW
INSERT INTO audit_log (tabelle, kunden_id, zeitpunkt, aktion)
VALUES ('kunden', NEW.id, NOW(), 'UPDATE');
Mit NEW und OLD greift der Trigger auf die neue beziehungsweise alte Zeile zu: bei UPDATE sind beide verfügbar, bei INSERT nur NEW, bei DELETE nur OLD.
Wichtige Fallstricke
- Unsichtbare Logik: Trigger laufen implizit – wer nur den Anwendungscode liest, sieht die Datenänderungen nicht.
- Performance: Bei Massenänderungen wird der Trigger pro Zeile ausgeführt und kann Abfragen spürbar verlangsamen.
- Fehlerfortpflanzung: Ein Fehler im Trigger bricht die auslösende Transaktion ab.
Verwandte Grundlagen: Stored Procedures, Primär- und Fremdschlüssel, Normalisierung.