TRUNCATE — у мовах, подібних до SQL, DDL-операція видалення усіх рядків таблиці. Логічно еквівалентна операції DELETE без оператора WHERE, однак часто виконується швидше та потребує менших ресурсів системи [1][2][3].

Синтаксис ред.

Загальний синтаксис команди:

TRUNCATE TABLE <Ім'я Таблиці>

Наслідком виконання такої команди є повне видалення усіх рядків таблиці <Ім'я таблиці>. Причому сама таблиця залишається (на відміну від команди DROP TABLE)

Відмінності від оператора DELETE ред.

Основні відмінності між операторами TRUNCATE та DELETE, що можуть бути в різних реалізаціях СУБД:

  • Операція TRUNCATE не записує до журналу подій (log-файл) видалення окремих рядків. Як наслідок, не активуються тригери.
  • Після операції TRUNCATE у деяких СУБД (наприклад, Oracle) відбувається неявна операція COMMIT. Тому видалені з таблиці записи не можна відновити операцією ROLLBACK. Втім, існують і СУБД, в яких операція TRUNCATE може брати участь у транзакціях, наприклад, Microsoft SQL Server.
  • Операція DELETE блокує кожний рядок, а TRUNCATE — усю таблицю.
  • Операція TRUNCATE не повертає якогось значення (зазвичай повертає 0) на відміну від DELETE, що повертає кількість видалених рядків.
  • Операція TRUNCATE, у деяких СУБД (наприклад, у MySQL, де вона еквівалентна послідовності команд DROP TABLE ... та CREATE TABLE ... [2]), обнуляє значення лічильників (для полів з AUTOINCREMENT).

Загалом, реалізація оператора TRUNCATE може залежати від вибору конкретної СУБД. Тому в кожному випадку слід читати документацію відповідної системи.

Джерела ред.

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