DELETE удаляет строки, в том числе выбранные через WHERE. TRUNCATE очищает таблицу целиком и обычно делает это быстрее, но имеет другие блокировки и правила работы с триггерами и зависимостями.
Чем TRUNCATE отличается от DELETE?
DELETE удаляет строки, в том числе выбранные через WHERE. TRUNCATE очищает таблицу целиком и обычно делает это быстрее, но имеет другие блокировки и правила работы с триггерами и зависимостями.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
DELETE удаляет строки, в том числе выбранные через WHERE. TRUNCATE очищает таблицу целиком и обычно делает это быстрее, но имеет другие блокировки и правила работы с триггерами и зависимостями.
В PostgreSQL TRUNCATE берёт ACCESS EXCLUSIVE, не вызывает ON DELETE-триггеры, но вызывает ON TRUNCATE. По умолчанию последовательности не сбрасываются; для этого нужно RESTART IDENTITY.
TRUNCATE в PostgreSQL можно откатить внутри транзакции, поэтому утверждение «он всегда неоткатываемый» неверно. Внешние ключи могут запретить операцию, а CASCADE затрагивает связанные таблицы и требует осторожности. Детали различаются между СУБД; выбор зависит от необходимости фильтра, конкурентного доступа и правил очистки.
Источник: www.postgresql.org.