Перейти до вмісту

Truncate (SQL)

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 02:42, 26 грудня 2014, створена 188.231.160.68 (обговорення) (Исправил линк)

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), обнулює значення лічильників (для полів з 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.