DELETE

Содержание раздела
  1. Синтаксис
  2. Ограничения
  3. Пример

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

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

Запрос не поддерживается для 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;