MSSQL работа в транзакциях TRUNCATE. Как это работает?

В MSSQL по моим экспериментам, можно использовать TRUNCATE в транзакциях, но при этом по документации нету упоминания как это работает и в чем разница между DELETE. Я знаю, что TRUNCATE заносит в журнал транзакций только информацию об количестве удаленных строк, но как он тогда восстанавливает данные при ROLLBACK? Был бы благодарен любой проверенной информации.


Ответы (1 шт):

Автор решения: Vitaliy Zlobin

DELETE можно откатить и в транзакции и по журналу транзакций(после закрытия транзакции), т.к. для каждой удалённой строки будет запись с её значением.

TRUNCATE можно откатить только в транзакции. Считай, что таблица(а точнее её блоки - экстенты) помечена на удаление, но ещё не удалена физически, пока открыта транзакция.

Здесь можно почитать подробнее и с примерами

→ Ссылка