Поиск…


Вступление

Оператор TRUNCATE удаляет все данные из таблицы. Это похоже на DELETE без фильтра, но, в зависимости от программного обеспечения базы данных, имеет определенные ограничения и оптимизации.

Синтаксис

  • TRUNCATE TABLE имя_таблицы;

замечания

TRUNCATE - это команда DDL (Data Definition Language), и поэтому существуют значительные различия между ней и DELETE (язык манипулирования данными, команда DML). Хотя TRUNCATE может быть средством быстрого удаления больших объемов записей из базы данных, эти различия следует понимать, чтобы решить, подходит ли использование команды TRUNCATE в вашей конкретной ситуации.

  • TRUNCATE - это операция с данными. Поэтому триггеры DML (ON DELETE), связанные с таблицей, не срабатывают при выполнении операции TRUNCATE. Хотя это позволит сэкономить большое количество времени для массовых операций удаления, однако вам может понадобиться вручную удалить связанные данные.
  • TRUNCATE освободит пространство на диске, используемое удаленными строками, DELETE освободит место
  • Если усеченная таблица использует столбцы идентификаторов (MS SQL Server), то семя сбрасывается командой TRUNCATE. Это может привести к проблемам ссылочной целостности
  • В зависимости от используемых ролей безопасности и используемого варианта SQL у вас могут не быть необходимых разрешений для выполнения команды TRUNCATE

Удаление всех строк из таблицы Employee

TRUNCATE TABLE Employee;

Использование таблицы усечений часто бывает лучше, чем использование DELETE TABLE, поскольку оно игнорирует все индексы и триггеры и просто удаляет все.

Удалить таблицу - это операция на основе строки, это означает, что каждая строка удаляется. Таблица усечения - это операция страницы с данными, перераспределенная на всю страницу данных. Если у вас есть таблица с миллионом строк, будет намного быстрее обрезать таблицу, чем было бы использовать оператор таблицы удалений.

Хотя мы можем удалять определенные строки с помощью DELETE, мы не можем TRUNCATE определенные строки, мы можем только TRUNCATE все записи сразу. Удаление всех строк, а затем добавление новой записи будет продолжать добавление значения «Приоритет» с автоматическим добавлением из ранее вставленного значения, где, как и в Truncate, значение первичного ключа Auto Incremental также будет сброшено и начнется с 1.

Обратите внимание, что при усечении таблицы внешние ключи не должны присутствовать , иначе вы получите сообщение об ошибке.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow