Skip to main content

MS SQL Datenbank-Trigger

Die Datenbank-Tabellen enthalten eine InsertTS Spalte, in der bei Anlage ein aktueller Zeitstempel geschrieben wird. Zudem enthalten die Tabellen eine UpdateTS. Der Wert in dieser Spalte soll sich bei einer Änderung auf den aktuellen Zeitstempel ändern. Bei MySQL kann dies direkt über die Tabellen-Konfiguration gesetzt werden. Bei MS SQL muss hierfür ein SQL-Befehl als Datenbank-Trigger angelegt werden.

Bei einigen Invoice-Versionen ist es dazu gekommen, dass die WHERE-Bedingung im SQL-Befehl fehlte.
Dies führt dazu, dass bei jeder Änderung alle UpdateTS-Werte aller Zeilen der Tabelle aktualisiert werden!
Gerade bei den Tabellen Invoice_Posting_Head und Invoice_Posting_Pos kann die fehlende WHERE-Bedingung zu Performance-Problemen und Schreibfehlern (Deadlock) führen.
Bei einem Update werden falsche Trigger nicht automatisiert korrigiert!

image-1770792614524.png