Siehe hier:
https://docwiki.embarcadero.com/RADS...es_Are_Applied
UpdateMode steuert, wie die WHERE Klausel des Update-Statements erzeugt wird. Wenn das Updatestatement keine Sätzte ändert, wird diese Fehlermeldung ausgegeben (weil Daten zwischenzeitlich geändert). Die Änderung kann unbeabsichtigt auch von dir herbeigeführt worden sein. TRIGGER wie Delphi.Narium schreibt, oder Runden von Floats uvm. Und klar dass bei UpdateKeyOnly der Fehgler nicht mehr kommt, weil viele Feldinhalte da von der prüfung ausgenommen sind.
Sieh dir die
SQL Update Statements im Profiler oder trace an und beachte die WHERE Klausel.