Комментарии 2
Не могу не оставить тут статью с критикой MERGE в MS SQL Server https://www.mssqltips.com/sqlservertip/3074/use-caution-with-sql-servers-merge-statement/
Вкратце:
в работе MERGE есть баги, некоторые из них не будут исправлены
для борьбы с race condition могут потребоваться избыточные блокировки (это указано в статье)
MERGE неочевидно работает с триггерами. Если на таблице есть триггеры, лучше дополнительно протестировать поведение MERGE
Статья интересная и такое применение лаконичнее, чем расписывать каждую команду по отдельности и для каждой ловить свой Output. Но надо помнить, что MERGE в MS SQL Server - не самая эффективная конструкция
Одно время пользовался MERGE, но отказался из- за того что порой не работало. Не стал разбираться. Лучше в сложной транзакции использовать обычные запросы или UPDATE....F ROM в хранимых процедурах. Это проще и контролировать и тестировать.
MERGE + OUTPUT: Upsert с логированием без триггеров