Вопросы к Поиску с Алисой
Оператор MERGE и UPSERT выполняют похожие функции, но у них есть некоторые различия. tproger.ru
UPSERT пытается выполнить обновление или, в случае сбоя, вставку. dba.stackexchange.com Он атомарный в своей функции insert-or-update. dba.stackexchange.com
MERGE фокусируется на объединении и синхронизации таблиц. dba.stackexchange.com Он более эффективен, поскольку выполняет только необходимые операции для каждой строки. tproger.ru Также MERGE атомарный, поскольку либо успешно выполняется, либо завершается неудачей целиком. tproger.ru Ещё он более гибкий, поскольку позволяет указывать более сложные условия. tproger.ru
Кроме того, MERGE не увеличивает поле id в случае, если запись уже существует. tproger.ru
Некоторые системы управления базами данных имеют свои реализации операторов MERGE и UPSERT. en.wikipedia.org antonz.org Например, в MySQL есть команда REPLACE, которая работает как INSERT, но если в новой и старой строке те же значения в PRIMARY KEY или UNIQUE-индексе, то старая строка удаляется перед тем, как вставляется новая. habr.com А UPSERT в этой системе представлен командой INSERT … ON DUPLICATE KEY UPDATE, где происходит INSERT и UPDATE (вместо DELETE в REPLACE). habr.com
MERGE поддерживается, в частности, в PostgreSQL (с версии 15), SQL Server (с версии 2008+) и Oracle (с версии 11+). antonz.org