DELETE FROM

Важно

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

Если попытаться выполнить операцию записи в транзакции, в которой задействованы и колоночные, и строковые таблицы, транзакция завершится с ошибкой: Write transactions between column and row tables are disabled at current time.

Удаляет строки из таблицы, подходящие под условия, заданные в WHERE.

Пример

DELETE FROM my_table
WHERE Key1 == 1 AND Key2 >= "One";

DELETE FROM ... ON

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

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

Пример

$to_delete = (
    SELECT Key, SubKey FROM my_table WHERE Value = "ToDelete" LIMIT 100
);

DELETE FROM my_table ON
SELECT * FROM $to_delete;

DELETE FROM ... RETURNING

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

Примеры

  • Возврат всех значений удаленных строк
DELETE FROM orders
WHERE status = 'cancelled'
RETURNING *;
  • Возврат конкретных столбцов
DELETE FROM orders
WHERE status = 'cancelled'
RETURNING order_id, order_date;

См. также

Предыдущая
Следующая