Ну в общем случае решение можно сформулировать так.
1. Провести учет.
2. Положить результаты учета куда-нить, откуда они не удаляться при откате транзакции.
3. Мягко откатить транзакцию.
4. Восстановить результаты учета в свои таблицы.
Куда класть - в файл, в массив rec17[10000] может быть даже в поток

- это дела вкуса

Дерзайте