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-
Условие выбора удаляемых данных.
Ограничения
- Блок WHERE может содержать только plain-условие; подзапросы, соединения и другие операции не поддерживаются.
- Выполнение запроса недоступно в сервисной базе данных
INFORMATION_SCHEMA.
Примеры
Удаление истории изменений
Удаление истории изменений тех записей, чье значение product_units меньше 10, из таблицы sales по момент времени '2019-12-23 15:15:14':
TRUNCATE HISTORY marketing.sales FOR SYSTEM_TIME AS OF '2019-12-23 15:15:14'
WHERE product_units < 10
Удаление записей и истории изменений
Удаление записей, чье значение id равно 123456, с историей изменений из таблицы stores:
TRUNCATE HISTORY marketing.stores FOR SYSTEM_TIME AS OF 'infinite'
WHERE id = 123456