«Зачем мне нужен такой запрос?» Оператор delete into выгоден по двум основным причинам:

  • Постановка Атомная; либо оба происходят, либо ничего не происходит, т. е. если удаление или вставка не удались, он откатывает изменения.
  • Это дешевле: ваша база данных должна искать записи только один раз. В качестве альтернативы, выполнение отдельной вставки и удаления требует двух поисков
  • Право на хвастовство: произведите впечатление на своего босса и коллег

Убежденный? «Покажите мне уже код!». Хорошо, но сначала нам нужно настроить несколько таблиц, чтобы продемонстрировать запрос. Позволяет код:

Настройка: создайте несколько таблиц с данными

В качестве примера представим, что у нас есть компания с большим количеством процессов. Каждый процесс записывает свои ошибки в таблицу с именем ErrorMessages для отслеживания. Как только ошибка устранена, срок ее действия истек или она больше не имеет значения, мы можем удалить ее из сообщений об ошибках. Однако мы хотели бы сохранить информацию об ошибке, чтобы позже мы могли проанализировать, какой процесс дает сбой чаще всего. Для этого мы создадим ErrorMessageBackup. Наша цель — удалить из ErrorMessages в таблицу ErrorMessageBackup. Давайте сначала создадим наши таблицы и вставим некоторые данные в наши сообщения об ошибках.

Выполняя эти запросы, мы видим, что содержимое таблицы ErrorMessages выглядит так:

Выполнение нашего запроса

Здесь начинается волшебство. Мы хотим удалить ошибку 404 из нашей базы данных. Давайте проверим наш запрос, а затем углубимся в него.

Мы ориентируемся на ErrorMessage с идентификатором 1. Мы сохраняем его в переменной @targetId. Затем мы УДАЛЯЕМ из таблицы ErrorMessages фильтрацию по этому идентификатору. С помощью OUTPUT у нас есть доступ к столбцам, которые мы удалили. Мы ВЫВОДИМ эти столбцы вместе с дополнительным в таблицу ErrorMessageBackup.

Вот и все! Простой и безопасный запрос, который позволяет выполнять два запроса одновременно.

Вывод

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

этастатья, в которой показано, как ОБНОВИТЬ В таблицу. Удачного кодирования!

— Майк

P.S. Нравится, что я делаю? "Подписывайтесь на меня"!