Інструкція truncate table - sql програмування

Інструкція TRUNCATE TABLE - це інструкція, яка не входить в стандарт ANSI, яка незворотньо видаляє всі рядки з таблиці без занесення в журнал видалення окремих рядків. Ця інструкція швидко видаляє всі записи з таблиці, не впливаючи на структуру таблиці і не займаючи або займаючи дуже мало місця в журналах відкату або журналах транзакцій. Однак, оскільки дана операція не журналіруется, інструкцію TRUNCATE TABLE можна скасувати після виконання.

Стандартний синтаксис de facto

Офіційно інструкція TRUNCATE TABLE не є стандартною командою ANSI. Однак є стандарт, який підтримують платформи і який має такий вигляд.

TRUNCATE TABLE ім'я_таблиці

Ключові слова

Ім'я будь-якої таблиці в поточній базі даних або схемою.

Загальні правила

Інструкція TRUNCATE TABLE надає той же дію, що і інструкція DELETE без пропозиції WHERE. Обидві інструкції видаляють всі рядки в цій таблиці. Однак є дві важливі відмінності. Інструкція TRUNCATE TABLE працює швидше і не журналіруется, що означає неможливість відкату в разі помилки. Крім того, інструкція TRUNCATE TABLE НЕ активує тригери, в той час як DELETE активує їх.

Поради та хитрості програмування

Оскільки інструкція TRUNCATE TABLE заношуваності в журнал, зазвичай вона використовується в базах даних, що знаходяться в процесі розробки. У робочих базах даних її потрібно застосовувати обережно!

TABLE в збережені процедури або функції робочого додатки, оскільки --- більшість платформ НЕ журіаліруют цю операцію і не зможуть скасувати неправильно подану інструкцію.

Команда TRUNCATE TABLE нічого очікувати виконано, якщо інший користувач заблокував таблицю в той момент, коли команда була подана. Інструкція TRUNCATE TABLE НЕ активізує тригери, але буде працювати і при їх наявності. Однак інструкція не спрацює, якщо в даній таблиці є обмеження FOREIGN KEY.

Версія 8 DB2 не підтримує інструкцію TRUNCATE TABLE.

Платформа MySQL, починаючи з версії 3.23, підтримує базовий формат інструкції TRUNCATE TABLE.

TRUNCATE TABLE ім'я

Платформа MySQL отримує потрібний результат шляхом видалення і повторного створення зазначеної таблиці. Оскільки MySQL зберігає кожну таблицю в файлі з ім'ям ім'я. / Гт, то для правильної роботи команди файл з цим ім'ям має існувати в директорії, що містить файли бази даних.

Наприклад, така інструкція видалить всі дані з таблиці publishers.

TRUNCATE TABLE publishers

Платформа Oracle дозволяє видалити таблицю або індексований кластер (але не хеш-кластер). Синтаксис наступний.

Інструкція TRUNCATE TABLE вперше з'явилася на платформі Oracle, і інші виробники незабаром ввели підтримку цієї інструкції. У Oracle до цієї інструкції були додані додаткові можливості, які часто підтримуються іншими виробниками.

Синтаксичні елементи в Oracle наступні

Вказується, буде віддалятися індексований кластер або таблиця. Індексований кластер - це конструкція, яка зберігає пов'язані рядки двох таблиць фізично на диску поруч один з одним для прискорення з'єднання шляхом зменшення навантаження на канали введення-виведення. При видаленні індексованого кластера не можна використовувати такі опції, як SNAPSHOT LOG і STORAGE.

PRESERVE MA TERIALIZED VIEWLOG

При видаленні основної таблиці зберігаються всі журнали-знімки.

PURGE MATERIALIZED VIEW LOG Видаліть всі журнали-знімки.

Дисковий простір, що звільнився при видаленні рядів, вивільняється. REUSE STORAGE

Дисковий простір, що звільнився при видаленні рядів, залишається закріпленим за даною таблицею. наприклад:

TRUNCATE TABLE scon. authors

PRESERVE SNAPSHOT LOG REUSE STORAGE

У цьому прикладі видаляються всі записи в таблиці scott.authors. Зберігається існуючий журнал-знімок, і таблиця може повторно використовувати закріплене за нею місце, що звільнилося.

PostgreSQL

Платформа PostgreSQL мало відрізняється від сформованого промислового стандарту. Було додано ключове слово TABLE.

TRUNCATE [TABLET ім'я

Ключове слово TABLE є необов'язковим. Наприклад, наступна команда видаляє всі записи з таблиці authors бази даних PostgreSQL.

SQL Server

Платформа SQL Server підтримує сформований de facto промисловий стандарт. Дивіться також

Додаткова інформація по темі

Синтаксис при використанні інструкції CREATE / ALTER TABLE, розширення і доповнення

Що таке існстуркція CREATE ROLE, і особливості синтаксису при її використанні і ключові слова

Правила і методи використання інструкції UPDATE в базах даних на різних платформах

Особливості використання інструкції CREATE SCHEMA, основний синтаксис при використанні