Чем TRUNCATE отличается от DELETE?

DELETE удаляет строки, в том числе выбранные через WHERE. TRUNCATE очищает таблицу целиком и обычно делает это быстрее, но имеет другие блокировки и правила работы с триггерами и зависимостями.

Короткий ответ

Что ответить на собеседовании

DELETE удаляет строки, в том числе выбранные через WHERE. TRUNCATE очищает таблицу целиком и обычно делает это быстрее, но имеет другие блокировки и правила работы с триггерами и зависимостями.

Подробный разбор

Ответ с пояснениями

DELETE удаляет строки, в том числе выбранные через WHERE. TRUNCATE очищает таблицу целиком и обычно делает это быстрее, но имеет другие блокировки и правила работы с триггерами и зависимостями.

В PostgreSQL TRUNCATE берёт ACCESS EXCLUSIVE, не вызывает ON DELETE-триггеры, но вызывает ON TRUNCATE. По умолчанию последовательности не сбрасываются; для этого нужно RESTART IDENTITY.

TRUNCATE в PostgreSQL можно откатить внутри транзакции, поэтому утверждение «он всегда неоткатываемый» неверно. Внешние ключи могут запретить операцию, а CASCADE затрагивает связанные таблицы и требует осторожности. Детали различаются между СУБД; выбор зависит от необходимости фильтра, конкурентного доступа и правил очистки.

Источник: www.postgresql.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее