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_at oder 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.