Бързо почистване на таблици на Oracle
Бързо почистване на таблици на Oracle. Израз TRUNCATE TABLE
Доста често, когато работите с СУБД на Oracle, се налага да изтриете всички данни от таблица и то възможно най-бързо. Освен това е необходимо физически да се освободи място на носителя.
С изразаdeleteможете просто да изтриете записи от таблица. Но това не винаги ще бъде достатъчно бързо и няма да освободи място на носителя. ИзразътTRUNCATE TABLEе много подходящ за изпълнение на задачата - работи бързо, почиства чисто. В най-простия случай синтаксисът е:
За по-сложен синтаксис вижтеOracle® Database SQL Reference.
Когато използвате съкратена таблица, може да срещнете следната грешка:ORA-02266: уникални/първични ключове в таблицата, посочени от активирани външни ключовеТази грешка възниква, ако таблицата, която искате да изчистите, е посочена от други таблици (т.е. чрез използване на външни ключове). Освен това тази грешка се появява дори ако няма записи в таблиците.
За да разрешите това ограничение на Oracle, преди да изпълните TRUNCATE TABLE, трябва да деактивирате всички външни ключове, да извършите почистване и след това да активирате ключовете. За да намерите всички външни ключове, можете да изпълните следната заявка:
Можете също да получите същата информация със следната заявка:
След като научите всички външни ключове и таблиците, в които се намират, можете да ги деактивирате. Това може да се направи със следния израз:
След като деактивирате външните ключове, можете да почистите - TRUNCATE TABLE. И след това не трябва да забравяте да активирате деактивираните ключове:
Както можете да видите, дори един привидно прост израз на Oracle има своите особености.
Внимание.Могат да коментират само регистрирани потребители. Могат да се използват следните HTML тагове: ,,, .