Назад к вопросам
Middle
10
В чём разница между TRUNCATE и DELETE?
Компании, где спрашивали
flank bank
Ответ от нейросети
sobes.tech AI
Разница между TRUNCATE и DELETE:
-
DELETE — это оператор SQL, который удаляет строки из таблицы по условию (если условие не указано, удаляет все строки). Он логгируется построчно, что позволяет откатить изменения (rollback). При удалении с помощью DELETE срабатывают триггеры.
-
TRUNCATE — это команда, которая быстро удаляет все строки из таблицы, фактически сбрасывая её. TRUNCATE не логгирует удаление каждой строки, а работает на уровне страниц данных, поэтому выполняется быстрее. Обычно TRUNCATE нельзя использовать с условием, и он не вызывает триггеры. Также TRUNCATE часто не может быть откатан в некоторых СУБД.
Пример:
DELETE FROM employees WHERE department = 'Sales'; -- удалит только сотрудников отдела продаж
TRUNCATE TABLE employees; -- удалит всех сотрудников быстро и полностью