Поиск

Синтаксис TRUNCATE

TRUNCATE TABLE имя_таблицы
TRUNCATE TABLE полностью очищает таблицу. Логически это эквивалент оператора DELETE, который удаляет все строки, но в некоторых случаях имеются определенные отличия практического плана.
Для InnoDB оператор TRUNCATE TABLE отображается на DELETE, потому здесь разницы нет. Для других механизмов хранения TRUNCATE TABLE отличается от delete from. .. в MySQL 4.0 и выше:

  1. Операции усечения (truncate) удаляют и пересоздают таблицы, что значительно быстрее, чем удалять строки одну за другой.
  2. Операции усечения не являются безопасными в отношении транзакций; вы получите ошибку, если на сервере существуют активные транзакции или активные блокировки таблиц.
  3. Количество удаленных строк не возвращается.
  4. До тех пор, пока файл определения таблицы имя_ та блицы. frm правильный, таблица может быть создана повторно с помощью оператора TRUNCATE TABLE как пустая, даже если файл данных или индексные файлы повреждены.
  5. Дескриптор таблицы не запоминает последнего использованного значения AUTO_INCREMENT, а начинает отсчет сначала. Это верно даже для механизма MyISAM, который обычно не использует повторно значений последовательности.

В MySQL 3.23 оператор TRUNCATE TABLE отображается на COMMIT; DELETE FROM имя_таблицы, то есть ведет себя подобно DELETE. См. раздел Операторы манипуляции данными
TRUNCATE TABLE - это SQL-оператор Oracle. Он был добавлен в MySQL 3.23.28, хотя в версиях от 3.23.28 до 3.23.32 ключевое слово table может пропускаться.