Spec-Zone .ru
спецификации, руководства, описания, API
|
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
сбои для InnoDB
таблица, если есть кто-либо FOREIGN KEY
ограничения от других таблиц та ссылка таблица. Ограничения
внешнего ключа между столбцами той же самой таблицы разрешаются.
Операции усечения не возвращают значимое значение для числа удаленных строк. Обычным результатом являются "0 строк, на которые влияют,", который должен быть интерпретирован как "никакая информация."
Пока файл формата таблицы
допустимо, таблица может быть воссоздана как пустая таблица с tbl_name
.frmTRUNCATE TABLE
, даже если файлы данных или индексные файлы стали
поврежденными.
Любой AUTO_INCREMENT
значение сбрасывается к его
значению запуска. Это - истина даже для MyISAM
и InnoDB
,
которые обычно не снова используют значения последовательности.
Когда использующийся с разделенными таблицами, TRUNCATE TABLE
сохраняет разделение; то есть, файлы данных и индексные
файлы отбрасываются и воссоздаются, в то время как определения раздела (.par
) файл незатронут.
TRUNCATE
TABLE
оператор не вызывает ON DELETE
триггеры.
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, "Сводные таблицы Схемы Производительности".