Truncate (SQL)
Матеріал з Вікіпедії — вільної енциклопедії.
Зміни шаблонів/файлів цієї версії очікують на перевірку.
Стабільна версія була перевірена 22 квітня 2013.
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 може залежати від вибору конкретної СУБД. Тому у кожному випадку рекомендується читати документацію обраної системи.
Примітки [ред.]
- ↑ «Электронная документация по SQL Server 2008 (июль 2009 г.). Оператор TRUNCATE TABLE.». Microsoft. Процитовано 14 мая 2010 г.
- ↑ «MySQL Documentation. TRUNCATE TABLE Syntax.». Процитовано 14 мая 2010 г.
- ↑ «Oracle® Database SQL Reference. 10g Release 2 (10.2).». Oracle Corporation. Процитовано 14 мая 2010 г.
|
||||||||

