- Возможно выполнение операций условного обновления, вставки и удаления данных в таблице базы данных.
- Выполняется операция
UPDATE, если строки существуют, и операцияINSERT, если это новая строка:- исключает необходимость в отдельных обновлениях;
- повышается производительность и простота использования;
- удобна в приложениях хранилища данных.
Сервером Oracle поддерживается инструкция MERGE для операций INSERT, UPDATE и DELETE. Используя эту инструкцию, можно обновить, вставить или удалить строку по условию в таблице, таким образом исключая необходимость применения нескольких инструкций DML. Решение о выполнении обновления, вставки или удаления в целевой таблице основывается на условии в предложении ON.
Необходимо иметь объектные привилегии INSERT и UPDATE на целевую таблицу и объектную привилегию SELECT на исходную таблицу. Чтобы задать предложение DELETE для merge_update_clause, необходимо также обладать объектной привилегией DELETE на целевую таблицу.
Инструкция MERGE является детерминированной. Одну и ту же строку целевой таблицы невозможно обновить несколько раз в одной и той же инструкции MERGE.
Альтернативный подход состоит в использовании циклов PL/SQL и нескольких инструкций DML. Однако инструкцию MERGE удобно использовать и проще выразить в виде одиночной инструкции SQL.
Инструкция MERGE удобна в ряде приложений хранилища данных. Например, в приложении хранилища данных иногда возникает необходимость в работе с данными, поступающими из нескольких источников, часть из которых может быть дубликатами. Инструкция MERGE позволяет добавлять и изменять строки по определенному условию.
Синтаксис инструкции MERGE
Используя инструкцию MERGE, можно по определенному условию вставлять, обновлять и удалять строки в таблице.
Объединение строк
Используя инструкцию MERGE, можно обновлять существующие строки и вставлять новые строки по определенному условию. Применяя инструкцию MERGE, можно удалить устаревшие строки одновременно с обновлением строк в таблице. Чтобы сделать это, в синтаксис инструк- ции MERGE включите предложение DELETE со своим собственным предложением WHERE.
Элементы синтаксиса:
- Предложение
INTO— задает целевую таблицу, которая обновляется или в которую выполняется вставка. - Предложение
USING— идентифицирует источник обновляемых или вставляемых данных; может быть таблицей, представлением или подзапросом. - Предложение
ON— условие, по которому операцияMERGEвыполняет обновление или вставку. WHEN MATCHED|WHEN NOT MATCHED— предписывает серверу, как реагировать на результаты условия объединения
Более подробно изложено в документации Oracle Database 11g SQL Reference (Справочник по SQL для базы данных Oracle 11g).
Далее: Функции TO_YMINTERVAL и TO_DSINTERVAL