При работе с базой данных мы используем Delete и Truncate, не зная различий между ними и когда их использовать. В этой статье мы обсудим разницу между Delete и Truncate в Sql.
Удалить
Удалить - это команда DML.
Оператор удаления выполняется с использованием блокировки строк, каждая строка в таблице блокируется для удаления.
Мы можем указать фильтры в предложении where.
Удаляет указанные данные, если существует условие.
Удалите действия триггера, потому что операция регистрируется индивидуально.
Медленнее, чем усечение, потому что он ведет логи
усекать
Усечение - это команда DDL.
Усеченная таблица всегда блокирует таблицу и страницу, но не каждую строку. Так как она удаляет все данные.
Невозможно использовать Где условие.
Удаляет все данные.
Усеченная таблица не может активировать триггер, поскольку операция не регистрирует удаление отдельных строк.
Быстрее с точки зрения производительности, потому что он не ведет журналы.
Заметка
Удалить и усечь оба можно откатить при использовании с транзакцией.
Если транзакция выполнена, значит зафиксирована, то мы не можем откатить команду Truncate из файлов журнала, но мы все равно можем откатить команду удаления из файлов журнала, так как удаляем записи записи их в файле журнала на случай, если в будущем потребуется откат из файлов журнала.
Если у вас есть ограничение внешнего ключа, относящееся к таблице, которую вы пытаетесь усечь, это не сработает, даже если в ссылающейся таблице нет данных. Это связано с тем, что проверка внешнего ключа выполняется с помощью DDL, а не DML. Это можно обойти, временно отключив ограничение (я) внешнего ключа для таблицы.
Удаление таблицы является зарегистрированной операцией. Таким образом, удаление каждой строки записывается в журнал транзакций, что делает его медленным.
Усеченная таблица также удаляет все строки в таблице, но не регистрирует удаление каждой строки, а записывает освобождение страниц данных таблицы, что ускоряет ее.
~ Если вы случайно удалили все данные из таблицы, используя Delete / Truncate. Вы можете откатить совершенную транзакцию. Восстановите последнюю резервную копию и запустите журнал транзакций до того времени, когда должно произойти удаление / усечение.
Проверьте эту таблицу отката статьи после команды усечения в Sql или
разница между ними-удалить-усечения в
Также см. когда используется команда усечения и удаления