TRUNCATE HISTORY
Содержание раздела
Запрос позволяет удалить актуальные записи логической таблицы с историей или только историю изменений. Данные выбираются по условию, указанному в блоке запроса WHERE. Данные удаляются окончательно и не подлежат восстановлению средствами системы.
Запрос поддерживает два режима работы:
- если в запросе указан момент (метка) времени, удаляется только история — архивные записи таблицы, которые соответствуют условию и стали архивными до последней закрытой на тот момент дельты (включительно);
- если в запросе указано ключевое слово
infinite, удаляются записи с историей — архивные и актуальные записи таблицы, которые соответствуют условию.
В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Удаление данных с помощью TRUNCATE HISTORY не версионируется системой и не записывается в журнал. Данные, удаленные таким образом, невозможно восстановить средствами системы.
На рисунке ниже показан пример удаления истории изменений из таблицы, в которую в течение года было добавлено три версии записи по одной торговой точке. Запрос с меткой времени '2021-04-10 01:00:00' удаляет первую версию записи: на тот момент времени последней закрытой дельтой была дельта со второй версией записи и только первая версия записи была архивной.
Удаление истории изменений старше 2021-04-10 01:00:00
Синтаксис
TRUNCATE HISTORY [db_name.]table_name FOR SYSTEM_TIME AS OF date_time_expression
[WHERE filter_expression]
Параметры:
db_name— имя логической базы данных. Опционально, если выбрана логическая БД, используемая по умолчанию;table_name— имя логической таблицы, данные которой удаляются;date_time_expression— выражение, определяющее категорию удаляемых данных. Может принимать следующие значения:'YYYY-MM-DD hh:mm:ss'— удаление истории старше указанного момента времени. Возможные форматы см. в разделе Форматы даты и времени;'infinite'— удаление записей с историей;
filter_expression— условие выбора удаляемых данных.
Ограничения
Выполнение запроса недоступно в сервисной базе данных INFORMATION_SCHEMA.
Пример
Удаление истории изменений тех записей, чье значение product_units меньше 10, из таблицы sales по момент времени '2019-12-23 15:15:14':
TRUNCATE HISTORY sales.sales FOR SYSTEM_TIME AS OF '2019-12-23 15:15:14'
WHERE product_units < 10
Удаление записей, чье значение id равно 123456, с историей изменений из таблицы stores:
TRUNCATE HISTORY sales.stores FOR SYSTEM_TIME AS OF 'infinite'
WHERE id = 123456