×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

6.1.179. TRUNCATE

6.1.179. TRUNCATE

TRUNCATE — очистка таблицы или набора таблиц

Синтаксис

TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ]
    [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]

Описание

TRUNCATE быстро удаляет все строки из набора таблиц. Команда выполняет те же действия, что и безусловный оператор DELETE для каждой таблицы, но поскольку она не сканирует таблицы, удаление происходит быстрее. Кроме того, она немедленно высвобождает дисковое пространство, не требуя выполнения последующей операции VACUUM operation. Это наиболее эффективно для таблиц большого объема.

Параметры

name

Имя таблицы (возможно, дополненное именем схемы) для очистки. Если указано ONLY указано перед именем таблицы, очищается только эта таблица. Если ONLY не указано, очищается сама таблица и все её дочерние таблицы (при их наличии). Дополнительно, * можно указать после имени таблицы, чтобы явно обозначить включение дочерних таблиц.

RESTART IDENTITY

Автоматически перезапускать последовательности, связанные со столбцами очищаемых таблиц.

CONTINUE IDENTITY

Не изменять значения последовательностей. Это поведение по умолчанию.

CASCADE

Автоматически очищать все таблицы, имеющие ссылки по внешнему ключу на любую из указанных таблиц или на любые таблицы, добавленные в группу вследствие CASCADE.

RESTRICT

Отклонять очистку, если на любую из таблиц имеются ссылки по внешнему ключу из таблиц, не указанных в команде. Это поведение по умолчанию.

Примечания

Необходимо обладать TRUNCATE правом доступа к таблице для её очистки.

TRUNCATE запрашивает блокировку ACCESS EXCLUSIVE для каждой таблицы, с которой выполняется операция, что блокирует все остальные параллельные операции с таблицей. Когда RESTART IDENTITY указано, любые последовательности, подлежащие перезапуску, также блокируются в исключительном режиме. Если требуется одновременный доступ к таблице, то DELETE вместо этого следует использовать команду.

TRUNCATE не может быть использована для таблицы, на которую ссылаются внешние ключи из других таблиц, за исключением случаев, когда все такие таблицы также очищаются этой же командой. Проверка целостности в таких случаях потребовала бы сканирования таблиц, тогда как основная цель — избежать этого. CASCADE параметр может быть использован для автоматического включения всех зависимых таблиц — но будьте крайне осторожны при использовании этого параметра, иначе можно потерять данные, которые не планировалось удалять! В частности, обратите внимание, что если очищаемая таблица является партицией, соседние партиции не затрагиваются, но каскадная операция распространяется на все ссылающиеся таблицы и все их партиции без исключения.

TRUNCATE не вызывает никакие ON DELETE триггеры, которые могут быть определены для таблиц. Однако она вызывает ON TRUNCATE триггеры. Если ON TRUNCATE триггеры определены для какой-либо из таблиц, то все BEFORE TRUNCATE триггеры срабатывают перед началом очистки, а все AFTER TRUNCATE триггеры срабатывают после выполнения последней операции очистки и сброса всех последовательностей. Триггеры вызываются в том порядке, в котором обрабатываются таблицы (сначала те, что указаны в команде, затем добавленные в результате каскадных операций).

TRUNCATE не является MVCC-безопасной. После очистки таблица будет выглядеть пустой для параллельных транзакций, если они используют моментальный снимок, сделанный до начала очистки. См. Раздел 2.10.6 для получения дополнительных сведений.

TRUNCATE является транзакционно-безопасной в отношении данных в таблицах: операция очистки будет корректно отменена, если охватывающая транзакция не будет зафиксирована.

При использовании RESTART IDENTITY указано, подразумеваемое ALTER SEQUENCE RESTART операции также выполняются транзакционно; то есть они будут отменены, если внешняя транзакция не будет зафиксирована. Следует учитывать, что если какие-либо дополнительные операции над перезапущенными последовательностями будут выполнены до отката транзакции, последствия этих операций для самих последовательностей будут отменены, но не их влияние на currval(); то есть после завершения транзакции currval() будет по-прежнему отражать последнее значение последовательности, полученное в рамках неудачной транзакции, даже если сама последовательность уже не будет ему соответствовать. Это аналогично обычному поведению currval() после неудачной транзакции.

TRUNCATE может использоваться для сторонних таблиц, если это поддерживается оберткой сторонних данных (FDW), например, см. postgres_fdw.

Примеры

Очистить таблицы bigtable и fattable:

TRUNCATE bigtable, fattable;

То же действие, но со сбросом всех связанных генераторов последовательностей:

TRUNCATE bigtable, fattable RESTART IDENTITY;

Очистка таблицы othertable, с каскадным распространением операции на все таблицы, ссылающиеся на данную othertable через ограничения внешнего ключа:

TRUNCATE othertable CASCADE;

Совместимость

Стандарт SQL:2008 включает TRUNCATE команду с синтаксисом TRUNCATE TABLE tablename. Предложения CONTINUE IDENTITY/RESTART IDENTITY также присутствуют в этом стандарте, но имеют несколько иные, хотя и смежные значения. Ряд аспектов поведения данной команды при параллельном доступе оставлен стандартом на усмотрение реализации, поэтому вышеизложенные примечания следует рассмотреть и при необходимости сравнить с другими реализациями.

См. также

DELETE
Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению