[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-sql-v-chem-otlichie-mezhdu-operatorami-delete-i-truncate":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},864,"v-chem-otlichie-mezhdu-operatorami-delete-i-truncate",25,"sql","SQL","🗃️","В чем отличие между операторами DELETE и TRUNCATE?","`DELETE` — оператор DML, который удаляет строки поштучно с возможностью фильтрации через `WHERE`, задействует триггеры и может быть откачен в транзакции. `TRUNCATE` — оператор DDL, который мгновенно очищает всю таблицу, удаляя и пересоздавая её структуру.\n\n| Характеристика | DELETE | TRUNCATE |\n|---------------|--------|----------|\n| Тип оператора | DML | DDL |\n| Фильтрация (WHERE) | Да | Нет (удаляет всё) |\n| Триггеры | Срабатывают | Не срабатывают |\n| Журналирование | Построчное (медленнее) | Минимальное (быстрее) |\n| Откат (ROLLBACK) | Да | Зависит от СУБД (в PostgreSQL — да) |\n| Сброс IDENTITY\u002FSERIAL | Нет | Да (можно управлять RESTART\u002FCONTINUE) |\n| FOREIGN KEY ссылки | Проверяются | Не выполнится, если есть ссылки |\n| Репликация | Реплицируется | Зависит от настройки |\n\n`TRUNCATE` значительно быстрее `DELETE` на больших таблицах, потому что не записывает каждую удалённую строку в журнал транзакций. Однако `TRUNCATE` невозможно выполнить, если на таблицу есть ссылки `FOREIGN KEY` из других таблиц (даже если ссылающиеся таблицы пусты — в некоторых СУБД).\n\n> **На собеседовании:** ключевые различия — DML vs DDL, триггеры, производительность. Частая ошибка — сказать, что `TRUNCATE` нельзя откатить (в PostgreSQL — можно, он транзакционный).","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"В чем отличие между операторами DELETE и TRUNCATE? — Gymterview","`DELETE` — оператор DML, который удаляет строки поштучно с возможностью фильтрации через `WHERE`, задействует триггеры и может быть откачен в транзакции. `TRUNC","`DELETE` — оператор DML, который удаляет строки поштучно с возможностью фильтрации через `WHERE`, задействует триггеры и",[7,13],"`DELETE` — оператор DML, который удаляет строки поштучно с возможностью фильтрации через `WHERE`, задействует триггеры и может быть откачен в транзакции. `TRUNCATE` — оператор DDL, который мгновенно очищает всю таблицу, удаляя и пересоздавая её структуру.",true]