Усечение (SQL)

редактировать

В SQL оператор TRUNCATE TABLEявляется языком определения данных (DDL) операция, которая отмечает экстенты таблицы для освобождения (пустая для повторного использования). В результате этой операции все данные быстро удаляются из таблицы , обычно в обход ряда механизмов обеспечения целостности. Он был официально представлен в стандарте SQL: 2008.

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

Оператор TRUNCATE TABLE mytableлогически (хотя и не физически) эквивалентен оператору DELETE FROM mytable(без пункт WHERE ). Следующие характеристики отличают TRUNCATE TABLEот DELETE:

  • В Oracle Database, TRUNCATEнеявно предшествует и за ним следует commit операция. (Это также может иметь место в MySQL при использовании механизма хранения транзакций.)
  • Обычно TRUNCATE TABLEбыстро удаляет все записи в таблице, освобождая страницы данных, используемые таблицей. Это снижает накладные расходы ресурсов на протоколирование удалений, а также количество полученных блокировок. Записи, удаленные таким образом, не могут быть восстановлены при откате. Двумя заметными исключениями из этого правила являются реализации, найденные в PostgreSQL и Microsoft SQL Server, оба из которых позволяют выполнять операторы TRUNCATE TABLEтранзакционным способом.
  • Вы не можете указать предложение WHEREв инструкции TRUNCATE TABLE- это все или ничего.
  • TRUNCATE TABLEне может использоваться, когда внешний key ссылается на таблицу, которая должна быть усечена, поскольку операторы TRUNCATE TABLEне запускают триггеры . Это может привести к несогласованности данных, поскольку триггеры ON DELETE/ ON UPDATEне срабатывают.
  • В некоторых компьютерных системах TRUNCATE TABLEсбрасывает отсчет столбца Identity до начального значения идентификатора.
  • В Microsoft SQL Server 2000 и более поздних версиях в режиме полного восстановления каждое изменение в базе данных регистрируется, поэтому Операторы TRUNCATE TABLEмогут использоваться для таблиц, участвующих в доставке журналов.
  • IBM Db2 поддерживает TRUNCATE TABLEв версии 9.7 или новее.
Ссылки

.

Последняя правка сделана 2021-06-11 12:56:02
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте