Отрязване (SQL)
TRUNCATE- В езици като SQL, DML е операция за изчистване на всички редове в таблица. Логически подобна на операцията DELETE без клаузата WHERE, но се различава в практически ситуации [1] [2] [3] .
Общ синтаксис на командата:
Последицата от изпълнението на такава команда е пълното изтриване на всички редове на таблицата.
Основните разлики между операторите TRUNCATE и DELETE, които могат да присъстват в различни реализации на СУБД, са:
- Операцията TRUNCATE не записва в регистъра на събитията изтриването на отделни редове. В резултат на това не може да активира тригери.
- След операцията TRUNCATE за някои СУБД (например Oracle) следва неявна операция COMMIT. Следователно записите, изтрити в таблицата, не могат да бъдат възстановени от операцията ROLLBACK. Но има и СУБД, в които операцията TRUNCATE може да участва в транзакции, например Microsoft SQL Server.
- Операцията DELETE заключва всеки ред, докато операцията TRUNCATE заключва цялата таблица.
- Операцията TRUNCATE не връща значима стойност (обикновено връща 0), за разлика от DELETE, която връща броя на изтритите редове.
- Операцията TRUNCATE в някои СУБД (например MySQL или Microsoft SQL Server) нулира стойността на броячите (за полета с AUTOINCREMENT / IDENTITY).
- Операцията TRUNCATE в някои СУБД (например MySQL или Microsoft SQL Server) е забранена за таблици, съдържащи външни ключове на други таблици.
Изпълнението на оператора TRUNCATE може да зависи от избора на конкретна СУБД. Следователно във всеки случай е необходимо да се проучи документацията на избраната система.