Для того
чтобы можно было выполнить по общему журналу индивидуальный откат транзакции,
все записи в журнале по данной транзакции связываются в обратный список. Началом
списка для незакончившихся транзакций является запись о последнем изменении
базы данных, произведенном данной транзакцией. Для закончившихся транзакций
(индивидуальные откаты которых уже невозможны) началом списка является запись
о конце транзакции, которая обязательно вытолкнута во внешнюю память журнала,
Концом списка всегда служит первая запись об изменении базы данных, произведенном
данной транзакцией. Обычно в каждой записи проставляется уникальный идентификатор
транзакции, чтобы можно было восстановить прямой список записей об изменениях
базы данных данной транзакцией.
Итак, индивидуальный
откат транзакции (еще раз подчеркнем, что это возможно только для незакончившихся
транзакций) выполняется следующим образом: