DELETE
Содержание раздела
Запрос позволяет переместить в архив актуальные записи логической таблицы, соответствующие указанному условию. Запрос обрабатывается в порядке, описанном в разделе Порядок обработки запросов на обновление данных.
Архивация данных возможна только в логической таблице. Архивация данных в логических и материализованных представлениях недоступна.
Запрос не поддерживается для ADG.
Для обновления большого объема данных следует использовать загрузку данных.
В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Синтаксис
DELETE FROM [db_name.]table_name [WHERE filter_expression]
Параметры:
db_name
— имя логической базы данных. Опционально, если выбрана логическая БД, используемая по умолчанию;table_name
— имя логической таблицы, данные которой архивируются;filter_expression
— условие выбора записей, подлежащих архивации. Если ключевое слово WHERE и условие не указаны, архивируются все актуальные данные таблицы.
Ограничения
- Выполнение запроса возможно только при наличии открытой дельты (см. BEGIN DELTA).
- Столбцы в условии запроса не могут иметь имена, зарезервированные для служебного использования:
sys_op
,sys_from
,sys_to
,sys_close_date
,bucket_id
,sign
. - В условии
WHERE
не допускается использование функций, результаты которых различаются в разных СУБД хранилища. Примерами таких функций служат операции с вещественными числами (числами с плавающей запятой): сравнение с вещественным числом, округление и т.д.
Пример
-- выбор логической базы данных sales в качестве базы данных по умолчанию
USE sales;
-- открытие новой (горячей) дельты
BEGIN DELTA;
-- архивация записей логической таблицы sales о покупках в магазине, который был закрыт
DELETE FROM sales WHERE store_id = 234;
-- закрытие дельты (фиксация изменений)
COMMIT DELTA;