Externally stored transaction
Long transactions, which may take some hours, might become very large and are difficult to store in memory. In order to provide performant transaction mechanisms in this case, too, transactions might be stored to disk.
Usually, external transactions are not nested, but one always may begin a pool or external transaction within an external transaction.
Except, that external transactions are stored to different media, they behave like pool transactions.
... fragment ( Property &person ) {
person.objectSpace().beginTransaction(true); // external transaction
if ( updatePersonIncome(person) ) // updates income for all persons
person.objectSpace().rollBack(); // error encountered
else
person.objectSpace().commitTransaction();
}

