I believe this is a case in which TDatasetProvider
is unable to produce the right command to update the tables involved. In this cases, what I do is to add a handler to the TDatasetProvider.BeforeUpdateRecord
event. This event will let you handle each operation worked on the dataset and produce the needed SQL statements to propertly persist those operations in the data server.
You will have to write the UPDATE/DELETE/INSERT statements yourself, but you will also have absolute power about how the tables are updated. That´s why I always use this event and never rely on TDatasetProvider
intrinsec update process.