Если вы используете последнюю версию MySQL 5.1, это должно работать:
ПОКАЗАТЬ ДВИГАТЕЛЬ СТАТУС INNODB содержит список активных транзакций для механизма InnoDB.Каждый имеет префикс с идентификатором транзакции и идентификатором процесса и выглядит примерно так:
---TRANSACTION 0 290328284, ACTIVE 0 sec, process no 3195, OS thread id
34831 rollback of SQL statement
MySQL thread id 18272
<query may be here>
Идентификатор потока MySQL будет соответствовать CONNECTION_ID () вашего сеанса, который вы можете получить из SHOW FULL PROCESSLISTили information_schema.processlist, чтобы вы могли определить, какая транзакция принадлежит вам.Вам придется проанализировать текст и разобрать запрос, если он присутствует.
Если этого недостаточно, вы можете попробовать что-то вроде SET @PROGRESS = @PROGRESS + 1 перед каждым оператором ROLLBACK,а затем ВЫБЕРИТЕ @PROGRESS из DUAL в конце вашего запроса, чтобы узнать, как далеко прошла транзакция, прежде чем она достигла отката.