Sobes.tech
Назад к вопросам
Middle+
4

Чем DELETE отличается от TRUNCATE? Как бы обнулил таблицу?

Компании, где спрашивали
МВидеоМВидео

Ответ от нейросети

sobes.tech AI

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

  • DELETE — это оператор DML, который удаляет строки по условию (или все строки, если условие не указано). Он логирует каждое удаление, может быть откатан в транзакции, вызывает триггеры, и удаление происходит построчно.

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

Если нужно «обнулить» таблицу (удалить все данные), то:

  • Если важна возможность отката и триггеры, используйте DELETE FROM table;
  • Если нужна максимальная скорость и можно потерять возможность отката, используйте TRUNCATE TABLE table;

Пример на Go с использованием database/sql:

_, err := db.Exec("TRUNCATE TABLE users")
if err != nil {
    // обработка ошибки
}

Или с DELETE:

_, err := db.Exec("DELETE FROM users")
if err != nil {
    // обработка ошибки
}