Sobes.tech
Junior — Middle

Koje su razlike između komandi DELETE i TRUNCATE prilikom brisanja podataka iz tabele?

sobes.tech АИ

Одговор од АИ

Команды DELETE и TRUNCATE обе используются для удаления данных из таблицы, но имеют существенные различия:

  • DELETE удаляет строки по одной, поддерживает условие WHERE, что позволяет удалять выборочно. Операция логируется и может быть откатана (rollback) в транзакции.
  • TRUNCATE удаляет все строки из таблицы целиком, не поддерживает WHERE. Обычно работает быстрее, так как не логирует удаление каждой строки, а сбрасывает данные страниц таблицы. TRUNCATE нельзя откатить в некоторых СУБД.

Пример:

DELETE FROM users WHERE status = 'inactive'; -- удалит только неактивных пользователей
TRUNCATE TABLE users; -- удалит всех пользователей сразу

Также TRUNCATE может сбросить счетчик автоинкремента, а DELETE — нет.