Усечение (SQL) - Википедия - Truncate (SQL)

В SQL, то ОБРЕЗАТЬ ТАБЛИЦУ заявление - это Язык определения данных (DDL) операция, которая отмечает экстенты таблицы для освобождения (пустые для повторного использования). Результат этой операции быстро удаляет все данные из стол, обычно в обход ряда механизмов обеспечения целостности. Он был официально представлен в SQL: 2008 стандарт.

TRUNCATE TABLE удаляет все строки из таблицы, но структура таблицы и ее столбцы, ограничения, индексы и так далее остаются. Чтобы удалить определение таблицы в дополнение к ее данным, используйте оператор DROP TABLE.

В УРЕЗАТЬ ТАБЛИЦУ mytable оператор логически (но не физически) эквивалентен УДАЛИТЬ ИЗ mytable заявление (без КУДА пункт). Различают следующие характеристики ОБРЕЗАТЬ ТАБЛИЦУ из УДАЛИТЬ:

  • в База данных Oracle, TRUNCATE неявно предшествует и следует за ним совершить операция. (Это также может иметь место в MySQL, при использовании механизма хранения транзакций.)
  • Обычно ОБРЕЗАТЬ ТАБЛИЦУ быстро удаляет все записи в таблице, освобождая страницы данных, используемые таблицей. Это снижает накладные расходы ресурсов протоколирование удаления, а также количество замки приобретенный. Записи, удаленные таким образом, не могут быть восстановлены при откате. Двумя заметными исключениями из этого правила являются реализации, найденные в PostgreSQL и Microsoft SQL Server, оба из которых позволяют ОБРЕЗАТЬ ТАБЛИЦУ операторы, которые необходимо зафиксировать или откатить транзакционно.
  • Вы не можете указать КУДА пункт в ОБРЕЗАТЬ ТАБЛИЦУ заявление - все или ничего.
  • ОБРЕЗАТЬ ТАБЛИЦУ не может использоваться, когда внешний ключ ссылается на таблицу, которая должна быть усечена, поскольку ОБРЕЗАТЬ ТАБЛИЦУ заявления не стреляют триггеры. Это может привести к противоречивым данным, потому что НА УДАЛЕНИЕ/НА ОБНОВЛЕНИИ триггеры не срабатывают.
  • В некоторых компьютерных системах ОБРЕЗАТЬ ТАБЛИЦУ сбрасывает счетчик Столбец идентичности вернуться к личности семя.
  • В Microsoft SQL Server 2000 и позже в режиме полного восстановления каждое изменение в базе данных регистрируется, поэтому ОБРЕЗАТЬ ТАБЛИЦУ операторы могут использоваться для таблиц, участвующих в доставка журналов.[1]
  • IBM Db2 поддерживает ОБРЕЗАТЬ ТАБЛИЦУ в 9.7 или новее.

Рекомендации

  1. ^ «Описание влияния операций без регистрации и с минимальным протоколированием на резервное копирование журнала транзакций и процесс восстановления в SQL Server». Microsoft. Декабрь 2005 г.