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

Truncate (SQL)

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 22:46, 9 листопада 2011, створена MerlIwBot (обговорення | внесок) (робот вилучив: nl:Truncate (SQL) (deleted))

TRUNCATE — у мовах, подібних до SQL, DML-операція видалення усіх рядків таблиці. Логично еквівалентна операції 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. Процитовано 14 мая 2010 г.
  2. MySQL Documentation. TRUNCATE TABLE Syntax. Процитовано 14 мая 2010 г.
  3. Oracle® Database SQL Reference. 10g Release 2 (10.2). Oracle Corporation. Процитовано 14 мая 2010 г.