Trigger, der tatsächlich alles löscht

Wenn man in T-SQL einen Trigger auf eine Tabelle legt und diese soll nach einem Löschvorgang ebenfalls etwas anderes machen, dann stoßt man auf das folgende Problem. Solange man nur eine Zeile löscht, ist alles in Ordnung, sobald man aber mehrere Datensätze löscht, kann es passieren, dass nur der erste Trigger greift. Der Grund ist, wie man auf die deleted Tabelle zugreift.

Nutzt man SELECT TOP 1 FROM deleted, so bekommt man auch nur die erste ID. Löscht man mehrere Datensätze, befinden sich aber mehrere IDs in der deleted Tabelle.

Die Lösung ist, dass man Cursor an dieser Stelle verwendet, die Zeile für Zeile, alle IDs bearbeiten.
[crayon-5c13b96bbdc00076195909/]