merge
Содержание
MERGE
Версии сервера
0.9 | 1.0 | 1.5.3 | 1.5.4 | 1.5.5 | 2.0 | 2.0.3 | 2.0.4 | 2.1 | 2.5 | 3.0 |
---|---|---|---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - | + | + | + |
Доступно в
Формат
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 читает данные из исходной (USING) таблицы и вставляет(INSERT) или обновляет (UPDATE) данные в целевой (INTO) таблице, в зависимости от условия.
Должна присутствовать хотя бы одна из двух секций [merge when matched] или [merge when not matched], при чем не более одного раза каждая.
Пример
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)
Замечание: Выполняется правое внешнее соединение между таблицами, указанными в INTO и USING, по условию <condition>. Если слева запись есть, то производится обновление, иначе вставка. Если справа так же нет записей, соответствующих условию, то вставка не производится.
См. также
Источник
%Firebird%\doc\sql.extensions\README.merge.txt
%Firebird%\doc\Firebird_v2.1.1.ReleaseNotes.pdf
merge.txt · Последнее изменение: 2009/12/14 13:24 (внешнее изменение) · В данный момент заблокировано пользователем 188.124.36.38
Обсуждение
Проверенно, работает!
Заменил конструкцию