Усечь (SQL)
В SQL TRUNCATE TABLE
Оператор — это операция языка манипулирования данными (DML), которая удаляет все строки таблицы, не вызывая триггерного действия. [1] В результате этой операции все данные быстро удаляются из таблицы , обычно в обход ряда механизмов обеспечения целостности. Он был официально представлен в стандарте SQL:2008 как дополнительная функция F200, «оператор TRUNCATE TABLE».
TRUNCATE TABLE удаляет все строки из таблицы, но структура таблицы, ее столбцы, ограничения, индексы и т. д. сохраняются. Чтобы удалить определение таблицы в дополнение к ее данным, используйте оператор DROP TABLE .
The TRUNCATE TABLE mytable
утверждение логически (хотя и не физически) эквивалентно DELETE FROM mytable
заявление (без WHERE
пункт). Следующие характеристики отличают TRUNCATE TABLE
от DELETE
:
- В данных Oracle базе
TRUNCATE
неявно предшествует и сопровождается операцией фиксации . (Это также может иметь место в MySQL при использовании механизма хранения транзакций.) - Обычно
TRUNCATE TABLE
быстро удаляет все записи в таблице, освобождая страницы данных, используемые таблицей. Это снижает затраты ресурсов на регистрацию удалений, а также количество блокировок полученных . Записи, удаленные таким образом, невозможно восстановить в ходе операции отката. Двумя заметными исключениями из этого правила являются реализации в PostgreSQL и Microsoft SQL Server , обе из которых позволяютTRUNCATE TABLE
операторы, которые необходимо зафиксировать или откатить транзакционно. - Невозможно указать
WHERE
пункт вTRUNCATE TABLE
заявление. TRUNCATE TABLE
не может использоваться, когда внешний ключ ссылается на таблицу, подлежащую усечению, посколькуTRUNCATE TABLE
операторы не запускают триггеры . Это может привести к противоречивым данным, посколькуON DELETE
/ON UPDATE
триггеры не сработали.- В некоторых компьютерных системах
TRUNCATE TABLE
сбрасывает счетчик столбца Identity идентификатора обратно в начальное значение . - В Microsoft SQL Server 2000 и более поздних версиях в режиме полного восстановления каждое изменение в базе данных протоколируется, поэтому
TRUNCATE TABLE
Операторы можно использовать для таблиц, участвующих в доставке журналов . [2]
Ссылки
[ редактировать ]- ^ «ISO/IEC 9075 Языки баз данных SQL» . iso.org . Проверено 4 июня 2023 г.
- ^ «Описание влияния нерегистрируемых и минимально протоколируемых операций на резервное копирование журнала транзакций и процесс восстановления в SQL Server» . Майкрософт. Декабрь 2005 г.