MSSQL работа в транзакциях TRUNCATE. Как это работает?
В MSSQL по моим экспериментам, можно использовать TRUNCATE в транзакциях, но при этом по документации нету упоминания как это работает и в чем разница между DELETE. Я знаю, что TRUNCATE заносит в журнал транзакций только информацию об количестве удаленных строк, но как он тогда восстанавливает данные при ROLLBACK? Был бы благодарен любой проверенной информации.
Ответы (1 шт):
DELETE можно откатить и в транзакции и по журналу транзакций(после закрытия транзакции), т.к. для каждой удалённой строки будет запись с её значением.
TRUNCATE можно откатить только в транзакции. Считай, что таблица(а точнее её блоки - экстенты) помечена на удаление, но ещё не удалена физически, пока открыта транзакция.
Здесь можно почитать подробнее и с примерами