Grundsätzlich würde ich sowas über
DB-Trigger lösen.
Wenn es aber in Delphi gelöst werden muss (aus welchem Grund auch immer), kann man im BeforePost NewValue und OldValue des DataSet vergleichen und daraus ein eigenes Protokoll basteln.
Falls es beim Ausführen des Datenbank-Updates zu einem Fehler kommt, muss dies noch ins Protokoll (oder die bereits protokollierte Eintragung wieder gelöscht werden).