Interested Article - Truncate (SQL)

TRUNCATE — в языке SQL — операция мгновенного удаления всех строк в таблице. Логически схожа с операцией DELETE без оператора WHERE , но в ситуациях на практике имеет отличия .

Синтаксис

Общий синтаксис команды:

TRUNCATE TABLE <Имя Таблицы>

Последствием выполнения такой команды является полное удаление всех строк таблицы <Имя Таблицы> .

Отличия от оператора DELETE

Основные отличия операторов TRUNCATE и DELETE, которые могут присутствовать в различных реализациях СУБД :

  • Операция TRUNCATE не записывает в журнал событий удаление отдельных строк. Вследствие чего не может активировать триггеры .
  • После операции TRUNCATE для некоторых СУБД (например, Oracle ) следует неявная операция COMMIT . Поэтому удаленные в таблице записи нельзя восстановить операцией ROLLBACK . Но существуют и СУБД, в которых операция TRUNCATE может участвовать в транзакциях, например, PostgreSQL и Microsoft SQL Server .
  • Операция DELETE блокирует каждую строку, а TRUNCATE — всю таблицу.
  • Операция TRUNCATE не возвращает какого-то осмысленного значения (обычно возвращает 0) в отличие от DELETE , которая возвращает число удаленных строк.
  • Операция TRUNCATE в некоторых СУБД (например, MySQL или Microsoft SQL Server ), сбрасывает значение счетчиков (для полей с AUTOINCREMENT / IDENTITY). В PostgreSQL для сброса счётчиков необходимо указывать модификатор RESTART IDENTITY.
  • Операция TRUNCATE в некоторых СУБД (например, MySQL , PostgreSQL или Microsoft SQL Server ) запрещена для таблиц, содержащих внешние ключи других таблиц. В PostgreSQL существует, однако, модификатор CASCADE, который разрешает TRUNCATE в этой ситуации — данные из зависимых таблиц удаляются в той же транзакции.
  • В SQLite операция как таковая отсутствует, но есть оптимизация операции DELETE, которая «значительно ускоряет её работу, если отсутствует аргумент WHERE».

Реализация оператора TRUNCATE может зависеть от выбора конкретной СУБД. Поэтому в каждом случае необходимо изучать документацию выбранной системы.

Примечания

  1. Microsoft. Дата обращения: 12 октября 2014. 25 апреля 2012 года.
  2. Дата обращения: 14 мая 2010. 25 апреля 2012 года.
  3. Oracle Corporation. Дата обращения: 14 мая 2010. 25 апреля 2012 года.
  4. . postgrespro.ru. Дата обращения: 7 июня 2020. 7 июня 2020 года.
  5. . www.sqlite.org. Дата обращения: 7 июня 2020. 17 июня 2020 года.
Источник —

Same as Truncate (SQL)