Загружаем изображение…
Атомарное перемещение данных между таблицами!
Иногда нужно архивировать старые данные: удалить их из основной таблицы и одновременно сохранить в архиве. Многие делают это двумя запросами (INSERT => DELETE):
DELETE FROM orders
RETURNING *RETURNING позволяет сразу вернуть удалённые строки как результирующий набор, не выполняя повторный SELECT.
WITH moved AS (...)CTE превращает результат удаления во временный набор данных, который можно использовать в следующей операции:
INSERT INTO orders_archive
SELECT * FROM moved;В итоге строки удаляются и архивируются одним атомарным запросом, без повторного чтения таблицы.
Полезный паттерн для архивирования, миграций, дедупликации и batch-операций над большими таблицами.
SQL Ready | #совет
Просмотры: 698