Back to questions
МВидео
Middle+
3
Чем DELETE отличается от TRUNCATE? Как бы обнулил таблицу?
Companies where asked
Answer from AI
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 {
// обработка ошибки
}