SQL Server 2005, массовое обновление или вставка
Я ищу решение для выполнения операции Insert, on duplicate key Update like в SQL Server 2005. Эта операция может вставить или обновить большое количество записей. SQL Server 2008 имеет аккуратную операцию слияния, которая сделает это идеально, проблема в том, что мы застряли с SQL Server 2005.
Я просмотрел стандартные решения, но все они не очень хороши, потому что они предполагают, что обновляется/вставляется только одна запись.
Кто-нибудь знает способ репликации поведения слияния в более старых системах версии SQL Server?
1 ответ:
Блог Алексея Кузнецова содержит предложение, использующее предложение
OUTPUT
из высказыванияUPDATE
. Перефразируя пример из этой записи блога (непроверенной):DECLARE @updated_ids table(id int) UPDATE table SET ... OUTPUT inserted.id INTO @updated_ids FROM table INNER JOIN data-to-insert ON table.id = data-to-insert.id INSERT INTO table SELECT ... FROM data-to-insert WHERE id NOT IN (SELECT id FROM @updated_ids)