В
Firebird 2.1 появилась новая инструкция MERGE.
Это групповая операция, которая позволяет произвести произвольную выборку и объединить её с уже существующими в таблице данными.
В зависимости от условия
condition, будет произведено либо обновление данных - блок
<merge when matched>, либо их вставка - блок
<merge when not matched>. Шаблон инструкции MERGE:
<merge statement>::=
MERGE
INTO <table or view> [ [AS] <correlation name> ]
USING <table or view or derived table> [ [AS] <correlation name> ]
ON <condition>
[ <merge when matched> ]
[ <merge when not matched> ]
<merge when matched> ::=
WHEN MATCHED THEN
UPDATE SET <assignment list>
<merge when not matched> ::=
WHEN NOT MATCHED THEN
INSERT [ <left paren> <column list> <right paren> ]
VALUES <left paren> <value list> <right paren>
В инструкции MERGE должно быть определено как минимум одно из выражений
<merge when matched> и
<merge when not matched>.
Пример MERGE:
MERGE INTO customers c
USING (SELECT * FROM customers_delta WHERE id > 10) cd
ON (c.id = cd.id)
WHEN MATCHED THEN
UPDATE SET name = cd.name
WHEN NOT MATCHED THEN
INSERT (id, name) VALUES (cd.id, cd.name)
Комментариев нет:
Отправить комментарий