Мне легче читать следующий синтаксис:
insert TargetTable
(col1, col2)
from SourceTable as source
where not exists
(
select *
from TargetTable as duplicate
where source.col1 = duplicate.col1
and source.col2 = duplicate.col2
)
Обычно вам не нужно беспокоиться о параллелизме при переносе данных. Если вы это сделаете, вы можете указать подсказки блокировки, такие как with (tablock)
или выше transaction isolation level
. Или вы можете использовать merge
как предложено, но у него довольно запутанный синтаксис.