Frank (no reg): MSSQL Trigger für Update/insert => TS + Checksum?

Beitrag lesen

Hallo,

du könntest auch einfach nur eine "Timestamp" Spalte anfügen, diese wird dann automatisch bei Updates und Inserts gepflegt. Will heissen, die Datenbank Engine schreibt selbst einen neuen binären Wert hinein. Der Wert wird auch jedes mal automatisch erhöht, so dass man damit sortieren und darauf filtern kann um alle geänderten Datensätze seit einem gewissen früheren Stand zu bekommen. Der Name "Timestamp" für den Datentyp ist vielleicht etwas unglücklich gewählt.

Warum dein Trigger nicht so richtig will liegt daran, dass du nicht mit den "pseudo"-Tabellen [inserted] und [deleted] arbeitest. Im Falle eines Inserts beinhaltet "inserted" den neuen Datensatz in der selben Struktur wie die geänderte Tabelle, bei einem Update hat "deleted" die alte Version des Datensatzes und "inserted" die neue Version.

Das Update im Trigger müsste dann quasi lauten

UPDATE t
SET lastupdates = GetDate()
FROM bm_sonderpreis t
INNER JOIN [inserted] i ON .Id = t.Id

Ich gehe mal davon aus, dass bm_sonderpreis eine eindeutige Primärschlüsselspalte namens "Id" hat. Ansonsten müsstest du entsprechend auf den Primärschlüssel joinen, den du hast.

Cheers, Frank