Задать вопрос
@Yumado

Как продолжить INSERT если значение существует?

INSERT INTO DT1._tbl1 (pole1, pole2 ...)
SELECT (pole1, pole2 ...) from DT2._tbl1
WHERE NOT EXISTS
 (SELECT 1 FROM DT1._tbl1 WHERE DT1._tbl1.pole1 IN 
  (' 1NK74CNB',
' 1NK6ZCNB',
' 1NK6XCNB',
' 1NK6UCNB',
' 1NINCCNB',
' 1NK71CNB',
' 1O5TXCNB'
))
AND DT2.tbl1. pole2 = '123'

Таких значений в целевой таблице нет, но по списку (WHERE IN) не добавляет, если есть (WHERE NOT EXISTS).
1) Это возможно - добавлять по списку?
Если добавить без контроля существующих значений (без WHERE NOT EXISTS), тогда вставка начинается, но обрывается на существующем значении.
Cannot insert duplicate key row in object 'DT1.tbl1' with unique index 'pole3'.
2) Как продолжить INSERT если значение существует?
3)Как обойтись без списка в коде? Можно использовать файл со значениями?
  • Вопрос задан
  • 108 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
@Yumado Автор вопроса
INSERT INTO [dbo].[TblDest]([ID], [MasterID])
SELECT TblSource.[ID], TblSource.[Master ID]
FROM [dbo].[TblSource]
INNER JOIN [dbo].[TblMaster] ON TblMaster.[ID] = TblSource.[Master ID]
WHERE NOT EXISTS (
   SELECT 1 FROM [dbo].[TblDest] WHERE [ID] = TblSource.[ID] AND [MasterID] = TblSource.[Master ID]
)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
Вам не insert чистый нужен, а merge.
Ответ написан
@elderl
У вас with unique index pole3. Остальное значения не имеет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы