Truncate (SQL)
TRUNCATE — в языке SQL — операция мгновенного удаления всех строк в таблице. Логически схожа с операцией DELETE без оператора WHERE, но в ситуациях на практике имеет отличия[1][2][3][4][5].
Синтаксис
Общий синтаксис команды:
TRUNCATE TABLE <Имя Таблицы>
Последствием выполнения такой команды является полное удаление всех строк таблицы <Имя Таблицы>.
Отличия от оператора DELETE
Основные отличия операторов TRUNCATE и DELETE, которые могут присутствовать в различных реализациях СУБД:
- Операция TRUNCATE не записывает в журнал событий удаление отдельных строк. Вследствие чего не может активировать триггеры.
- После операции TRUNCATE для некоторых СУБД (например, Oracle) следует неявная операция COMMIT. Поэтому удаленные в таблице записи нельзя восстановить операцией ROLLBACK. Но существуют и СУБД, в которых операция TRUNCATE может участвовать в транзакциях, например, PostgreSQL и Microsoft SQL Server.
- Операция DELETE блокирует каждую строку, а TRUNCATE — всю таблицу.
- Операция TRUNCATE не возвращает какого-то осмысленного значения (обычно возвращает 0) в отличие от DELETE, которая возвращает число удаленных строк.
- Операция TRUNCATE в некоторых СУБД (например, MySQL или Microsoft SQL Server), сбрасывает значение счетчиков (для полей с AUTOINCREMENT / IDENTITY). В PostgreSQL для сброса счётчиков необходимо указывать модификатор RESTART IDENTITY.
- Операция TRUNCATE в некоторых СУБД (например, MySQL, PostgreSQL или Microsoft SQL Server) запрещена для таблиц, содержащих внешние ключи других таблиц. В PostgreSQL существует, однако, модификатор CASCADE, который разрешает TRUNCATE в этой ситуации — данные из зависимых таблиц удаляются в той же транзакции.
- В SQLite операция как таковая отсутствует, но есть оптимизация операции DELETE, которая «значительно ускоряет её работу, если отсутствует аргумент WHERE».
Реализация оператора TRUNCATE может зависеть от выбора конкретной СУБД. Поэтому в каждом случае необходимо изучать документацию выбранной системы.
Примечания
- ↑ Электронная документация по SQL Server. Оператор TRUNCATE TABLE. . Microsoft. Дата обращения: 12 октября 2014. Архивировано 25 апреля 2012 года.
- ↑ MySQL Documentation. TRUNCATE TABLE Syntax. . Дата обращения: 14 мая 2010 г. Архивировано 25 апреля 2012 года.
- ↑ Oracle® Database SQL Reference. 10g Release 2 (10.2). . Oracle Corporation. Дата обращения: 14 мая 2010 г. Архивировано 25 апреля 2012 года.
- ↑ Postgres Pro Standard : Документация: 9.5: TRUNCATE . postgrespro.ru. Дата обращения: 7 июня 2020. Архивировано 7 июня 2020 года.
- ↑ DELETE . www.sqlite.org. Дата обращения: 7 июня 2020. Архивировано 17 июня 2020 года.
Для улучшения этой статьи по информационным технологиям желательно: |