Оператор MERGE

Оценить
(2 голоса)

SQL Server 2008 вводит SQL-оператор merge. Этот оператор объединяет последовательность условных команд insert и update в одном атомарном операторе в зависимости от существования записи.

Основной областью приложения оператора merge является хранилище данных, где нужно периодически обновлять таблицы с учетом вновь приходящих данных от систем оперативной обработки транзакций (OLTP, online transaction processing). Эти новые данные могут содержать изменения для существующих строк таблиц и/или новые строки, которые нужно добавить. Если строка в новых данных соответствует элементу, который уже существует в таблице, то выполняется оператор update. В противном случае выполняется оператор insert.

В версиях, предшествующих SQL Server 2008, эти операции выполнялись либо как последовательность операторов insert и update, либо как пакеты, где для каждой строки принималось решение, добавлять или изменять данные. Применение обеих этих техник имеет недостатки производительности: первой требуется множественное сканирование данных, а вторая оперирует по принципу «запись за записью». При расширении Transact-SQL новым оператором SQL Server 2008 преодолевает недостатки предыдущих подходов и упрощает реализацию приложений хранения данных.

Примеры 7.22 и 7.23 демонстрируют использование оператора merge.

 

Оператор MERGE

 

В примере 7.22 создается таблица bonus, которая содержит одну строку (pi, 100). Эта таблица может быть использована для слияния.

 

Оператор MERGE

 

Оператор merge в примере 7.23 изменяет данные в таблице bonus в зависимости от существования значений в столбце ргпо. Если значение столбца projectno таблицы project появляется в столбце ргпо таблицы bonus, ветвь matched будет выполнена и существующее значение будет изменено. В противном случае будет выполняться ветвь not matched и соответствующий оператор insert добавит новую строку в таблицу bonus.


Резюме к изменение содержимого таблиц
Оператор INSERT
Добавление одной строки
Добавление множества строк
Конструкторы значений таблицы и оператор INSERT

Добавить комментарий


Защитный код
Обновить

© 2018 www.serversql.ru. Все права защищены.