Truncate (SQL)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Правильный заголовок этой статьи — TRUNCATE. Он показан некорректно из-за технических ограничений.

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

Синтаксис[править]

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

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

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

Отличия от оператора DELETE[править]

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

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

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

Примечания[править]

  1. Электронная документация по SQL Server 2008 (июль 2009 г.). Оператор TRUNCATE TABLE.. Microsoft. Архивировано из первоисточника 25 апреля 2012. Проверено 14 мая 2010 г.
  2. MySQL Documentation. TRUNCATE TABLE Syntax.. Архивировано из первоисточника 25 апреля 2012. Проверено 14 мая 2010 г.
  3. Oracle® Database SQL Reference. 10g Release 2 (10.2).. Oracle Corporation. Архивировано из первоисточника 25 апреля 2012. Проверено 14 мая 2010 г.