Genau das ist der Punkt – und zugleich die Kehrseite, deshalb die Frage „wann besser nicht“ 😄 Trigger haben einen ernsten Nachteil: versteckte Logik.
- Ein Trigger läuft unsichtbar mit. Wenn ein simples UPDATE plötzlich drei weitere Tabellen verändert oder einen Fehler wirft, sucht man sich beim Debuggen dumm und dämlich, weil im Anwendungscode nichts davon steht.
- Trigger, die weitere Änderungen auslösen, können Kaskaden oder sogar Endlosschleifen erzeugen, und sie kosten bei Massen-Updates Performance (sie feuern pro betroffener Zeile bzw. Anweisung).
Faustregel aus der Praxis: Trigger sind stark für datennahe, tabellenübergreifende Automatik (Historisierung, Audit-Log, Integrität, die kein Fremdschlüssel abbildet). Fachliche Geschäftslogik gehört dagegen eher in die Anwendung bzw. eine klar aufgerufene Stored Procedure, wo man sie sieht und testen kann. Sparsam einsetzen und gut dokumentieren – dann sind sie ein Segen statt einer Falle.