DELETE

Содержание раздела
  1. Синтаксис
    1. Ключевое слово RETRY
  2. Ограничения
  3. Примеры
    1. Удаление записей логической таблицы
    2. Удаление записей standalone-таблицы
    3. Перезапуск операции по удалению записей

Запрос удаляет записи логической таблицы или standalone-таблицы согласно условию, указанному в блоке WHERE.

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

Синтаксис удаления из standalone-таблицы подразумевает использование внешней writable-таблицы, которая указывает на нужную standalone-таблицу.

Удаление данных из логических и материализованных представлений недоступно.

Удаление записей логической таблицы доступно из ADB, ADQM и ADP, удаление записей standalone-таблицы — из ADB и ADP.

Для обновления большого объема данных следует использовать загрузку данных.

Запрос обрабатывается в порядке, описанном в разделе Порядок обработки запросов на обновление данных.

В ответе возвращается:

  • пустой объект ResultSet при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

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

Запрос DELETE не удаляет историю изменений данных в логической таблице.
Чтобы удалить часть данных с историей изменений или только историю изменений, выполните запрос TRUNCATE HISTORY, чтобы удалить все данные таблицы вместе с историей изменений — запрос DROP TABLE. Обратите внимание, что данные, удаленные запросами TRUNCATE HISTORY и DROP TABLE, невозможно восстановить средствами системы.

Синтаксис

Удаление записей:

DELETE FROM [db_name.]table_name [WHERE filter_expression]

Перезапуск операции по удалению записей:

RETRY DELETE FROM [db_name.]table_name [WHERE filter_expression]

Параметры:

db_name

Имя логической базы данных. Опционально, если выбрана логическая БД, используемая по умолчанию.

table_name

Имя таблицы, из которой удаляются записи. Возможные значения:

  • имя логической таблицы,
  • имя внешней writable-таблицы, указывающей на нужную standalone-таблицу.
filter_expression

Условие выбора удаляемых записей. Если условие не указано, удаляются все актуальные данные таблицы или все данные standalone-таблицы (в зависимости от вида таблицы).

Ключевое слово RETRY

Ключевое слово перезапускает обработку незавершенной операции записи, созданной запросом DELETE. Пример запроса см. ниже. Список незавершенных операций можно получить с помощью запроса GET_WRITE_OPERATIONS.

Если ключевое слово не указано, система создает новую операцию и обрабатывает ее.

Ключевое слово RETRY недоступно в запросах на удаление записей из standalone-таблицы.

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

Ограничения

  • Удаление записей из логических таблиц возможно только при наличии открытой дельты (см. BEGIN DELTA).
  • В блоке WHERE не допускается использование функций, которые приводят к разным результатам в разных СУБД хранилища. Примеры таких функций — это операции над числами с плавающей запятой: сравнение с ними, округление и т.д.
  • Не допускается параллельное выполнение идентичных запросов.

Примеры

Удаление записей логической таблицы

-- выбор логической базы данных marketing в качестве базы данных по умолчанию
USE marketing;

-- открытие новой (горячей) дельты
BEGIN DELTA;

-- удаление записей логической таблицы sales о покупках в закрытом магазине
DELETE FROM sales WHERE store_id = 234;

-- закрытие дельты (фиксация изменений)
COMMIT DELTA;

Удаление записей standalone-таблицы

-- удаление записей standalone-таблицы, на которую указывает внешняя writable-таблица agreements_ext_write_adp
DELETE FROM marketing.agreements_ext_write_adp WHERE client_id < 100;

Перезапуск операции по удалению записей

-- выбор логической базы данных marketing в качестве базы данных по умолчанию
USE marketing;

-- открытие новой (горячей) дельты
BEGIN DELTA;

-- удаление записей логической таблицы sales о покупках в магазине
DELETE FROM sales WHERE store_id = 123;

-- перезапуск обработки операции по удалению записей
RETRY DELETE FROM sales WHERE store_id = 123;

-- закрытие дельты (фиксация изменений)
COMMIT DELTA;