Truncate (SQL)

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая MerlIwBot (обсуждение | вклад) в 22:46, 9 ноября 2011 (робот удалил: nl:Truncate (SQL) (deleted)). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

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 может зависить от выбора конкретной СУБД. Поэтому в каждом случае рекомендуется смотреть документацию выбранной системы.

Ссылки

  1. Электронная документация по SQL Server 2008 (июль 2009 г.). Оператор TRUNCATE TABLE. Microsoft. Дата обращения: 14 мая 2010.
  2. MySQL Documentation. TRUNCATE TABLE Syntax. Дата обращения: 14 мая 2010.
  3. Oracle® Database SQL Reference. 10g Release 2 (10.2). Oracle Corporation. Дата обращения: 14 мая 2010.

См.также