Truncate (SQL)

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

TRUNCATE — в языках, подобных SQL, DDL-операция очистки всех строк в таблице. Логически схожа с операцией 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. Оператор TRUNCATE TABLE.. Microsoft. Проверено 12 октября 2014. Архивировано 25 апреля 2012 года.
  2. MySQL Documentation. TRUNCATE TABLE Syntax.. Проверено 14 мая 2010 г. Архивировано 25 апреля 2012 года.
  3. Oracle® Database SQL Reference. 10g Release 2 (10.2).. Oracle Corporation. Проверено 14 мая 2010 г. Архивировано 25 апреля 2012 года.