Ваш вопрос был о MySQL, и я почти ничего не знаю о MySQL как о продукте, но я подумал, что добавлю, что в SQL Server оператор TRUNCATE может откатываться. Попробуйте сами
create table test1 (col1 int)
go
insert test1 values(3)
begin tran
truncate table test1
select * from test1
rollback tran
select * from test1
В SQL Server TRUNCATE регистрируется, он просто не регистрируется таким многословным способом, как DELETE. Я считаю, что это называется минимально зарегистрированной операцией. Фактически страницы данных все еще содержат данные, но их экстенты были помечены для удаления. Пока страницы данных все еще существуют, вы можете откатить усечение. Надеюсь, это полезно. Мне было бы интересно узнать результаты, если кто-то попробует это на MySQL.