ZODB.Undo
Documentation
The object database was designed to support databases that stored multiple object versions. This can be used to support undoing changes as well as �time travel�. Like versions, undo requires support from a storage manager and not all storage managers support undo.
To maintain database integrity, undo must be applied to whole transactions, not just object data records. BoboPOS 2 sometimes got this wrong, especially when undoing transactions that were incomplete due to packing. Z ODB 3 addresses this issue through more stringent requirements in the storage interface.
A by-product of the more careful handling if undo is a tighter integration of undo and versions. Undo can now apply to version operations like version commit and version abort.
If a transaction spans multiple databases with mixed undo support, then the transaction cannot be undone, even in databases with undo support. This is necessary to maintain transaction integrity.