Синтаксис TRUNCATE
TRUNCATE TABLE имя_таблицы
TRUNCATE TABLE полностью очищает таблицу. Логически это эквивалент
оператора DELETE, который удаляет все строки, но в некоторых случаях
имеются определенные отличия практического плана.
Для InnoDB оператор TRUNCATE TABLE отображается на DELETE, потому
здесь разницы нет. Для других механизмов хранения TRUNCATE TABLE
отличается от delete from. .. в MySQL 4.0 и выше:
- Операции усечения (truncate) удаляют и пересоздают таблицы, что значительно быстрее, чем удалять строки одну за другой.
- Операции усечения не являются безопасными в отношении транзакций;
вы получите ошибку, если на сервере существуют активные транзакции или
активные блокировки таблиц.
- Количество удаленных строк не возвращается.
- До тех пор, пока файл определения таблицы имя_ та блицы. frm
правильный, таблица может быть создана повторно с помощью оператора
TRUNCATE TABLE как пустая, даже если файл данных или индексные файлы
повреждены.
- Дескриптор таблицы не запоминает последнего использованного
значения 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
может пропускаться.
|