I wanted to implement a table structure where the master record held a total amount for the receipt and each of the detail records contained another amount. The total of all the detail records should agree to that in the master record.
In spite of the promise of cached updates, there are many significant problems in using them,
The way that the checked updates are discarded proved difficult to code around. For
example, you can catch the change of the master record by using the BeforeScroll
event but cached updates are sensitive to the order of the changes. If the current master
is edited after adding cached changes against the detail record, they are then lost.
So the original requirement (that of a consistent receipt) can only be achieved by using a database transaction (a unit of work).