На SQL MERGE
как вставить оператор типа "ничего не делать"? Например, у меня есть это прямо сейчас:
MERGE INTO dbo.Worker AS T
USING dbo.Collector_Worker AS S
ON T.WWID = S.WWID
WHEN MATCHED THEN UPDATE SET
T.IDSID = S.IDSID,
...
WHEN NOT MATCHED THEN
INSERT (WWID, IDSID, ...)
VALUES (S.WWID, S.IDSID, ...)
WHEN NOT MATCHED BY SOURCE THEN
UPDATE SET T.Person_Status_Type = 'INACTIVE', T.Active = 0;
Есть тонна других столбцов, где символы ...
. Так что это прекрасно работает, за исключением того факта, что он обновляет каждую строку, которая уже существует, даже если нет никаких изменений. Поскольку в таблице миллион строк, это масса ненужных изменений. Я хочу обновить строку только в случае внесения изменений.
Если я попытаюсь просто добавить AND T.IDSID <> S.IDSID
в оператор ON
, произойдет сбой, потому что теперь он пытается выполнить оператор INSERT
.