TRUNCATE TABLE SQL Server

В этом учебном пособии вы узнаете, как использовать оператор TRUNCATE TABLE в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

Оператор TRUNCATE TABLE используется для очистки всех записей из таблицы в SQL Server. Он выполняет ту же функцию, что и оператор DELETE, без предложения WHERE.

Синтаксис

Синтаксис оператора TRUNCATE TABLE в SQL Server (Transact-SQL):

TRUNCATE TABLE [database_name.] [schema_name.] table_name
[ WITH ( PARTITIONS ( partition_number
| partition_number TO partition_number ) ] ;

Параметры или аргументы

database_name — необязательный. Если указано, это имя базы данных.
schema_name — необязательный. Если указано, это имя схемы, к которой принадлежит таблица.
table_name — таблица, которую вы хотите очистить.
WITH (PARTITIONS (partition_number | partition_number TO partition_number) — необязательно и может использоваться только с многораздельными таблицами. Если указано, partition_number — это номер раздела, который вы хотите усечь в многораздельной таблице. Чтобы перечислить несколько разделов, запятые разделяют значения или диапазоны номеров разделов. Если вы попытаетесь использовать этот раздел с таблицей, которая не разбита на разделы, SQL Server вернет ошибку. Эта функция недоступна во всех версиях SQL Server.

Примечание

  • Вы не можете очистить таблицу, на которую ссылается внешний ключ.
  • Прежде чем вы сможете очистить таблицу, вы должны обладать необходимыми привилегиями, такими как ALTER TABLE.

Пример

В SQL Server очистка таблицы — это быстрый способ очистить записи из таблицы, если вам не нужно беспокоиться об откате. Когда таблица очищается, удаление строк не регистрируется, поэтому откатывание невозможно. Очистка таблицы также намного проще, чем удаление таблицы и ее воссоздание.

Рассмотрим пример использования оператора TRUNCATE TABLE в SQL Server.
Например:

В этом примере очистится таблица, называемая employees, и удалятся все записи из этой таблицы.

Это будет эквивалентно следующему оператору DELETE в SQL Server:

Оба этих утверждения приведут к удалению всех данных из таблицы employees. Основное различие между ними состоит в том, что вы можете откатить оператор DELETE, если вы выберете, но вы не можете отменить TRUNCATE TABLE.

Давайте рассмотрим еще один пример, где мы используем префикс базы данных с именем таблицы.
Например:

В этом примере очищается таблица, называемая contacts в базе данных, называемой totn.

With Partitions

Если вы хотите очистить определенный раздел или диапазон разделов, вы можете использовать предложение WITH PARTITIONS.
Например:

В этом примере таблица employee — это многораздельная таблица, и оператор TRUNCATE TABLE будет обрезать разделы с 1 по 5, а также раздел 7 в этой таблице.