Spec-Zone .ru
спецификации, руководства, описания, API

13.1.27. TRUNCATE TABLE Синтаксис

TRUNCATE [TABLE] tbl_name

TRUNCATE TABLE освобождает таблицу полностью. Это требует DROP полномочие.

Логически, TRUNCATE TABLE подобно a DELETE оператор, который удаляет все строки, или последовательность DROP TABLE и CREATE TABLE операторы. Чтобы достигнуть высокой производительности, это обходит метод DML удаления данных. Таким образом это не может откатываться, это не вызывает ON DELETE триггеры, чтобы стрелять, и это не может быть выполнено для InnoDB таблицы с родительско-дочерними отношениями внешнего ключа.

Хотя TRUNCATE TABLE подобно DELETE, это классифицируется как оператор DDL, а не оператор DML. Это отличается от DELETE следующими способами в MySQL 5.7:

TRUNCATE TABLE поскольку таблица закрывает все обработчики для таблицы, которые были открыты с HANDLER OPEN.

TRUNCATE TABLE лечится в целях двоичного журналирования и репликации как DROP TABLE сопровождаемый CREATE TABLE— то есть, как DDL, а не DML. Это то, вследствие того, что, при использовании InnoDB и другие транзакционные механизмы хранения, где уровень изоляции транзакции не разрешает основанное на операторе журналирование (READ COMMITTED или READ UNCOMMITTED), оператор не был зарегистрирован и тиражировался при использовании STATEMENT или MIXED журналирование режима. (Ошибка #36763) Однако, это все еще применяется на ведомое использование репликации InnoDB таким образом описанный ранее.

TRUNCATE TABLE может использоваться со сводными таблицами Схемы Производительности, но эффект состоит в том, чтобы сбросить сводные столбцы к 0 или NULL, не удалить строки. См. Раздел 20.9.8, "Сводные таблицы Схемы Производительности".