Использование ignore_duplicate для не первичного ключа

62
2

У меня есть таблица:

   ID (identity, PK), TaskNr, OfferNr

Я хочу сделать инструкцию insert ignore, но, к сожалению, она не работает на MSSQL, поэтому есть переключатель IGNORE_DUP. Но мне нужно проверить дубликаты, используя столбец TaskNr. Есть ли шанс сделать это?

Редактировать:

Пример данных:

ID (identity, PK), TaskNr, OfferNr
1 BP1234 XAS
2 BD123 JFRT
3 1122AH JDA33
4 22345_a MD_3

Попытка сделать:

insert ignore into Sample_table (TaskNr, OfferNr) values (BP1234, DFD,)

Следует игнорировать эту строку и перейти к следующему значению инструкции insert. ID автоинкремлен, но уникальное значение должно быть проверено с использованием столбца TaskNr.

спросил(а) 2021-01-25T21:48:20+03:00 4 месяца, 4 недели назад
1
Решение
63

SQL Server не поддерживает insert ignore. Это функциональность MySQL.

Вы можете делать то, что хотите:

insert ignore into Sample_table (TaskNr, OfferNr)
select x.TaskNr, x.OfferNr
from (select 'BP1234' as TaskNr, 'DFD' as OfferNr) x
where not exists (select 1
from Sample_Table st
where st.TaskNr = x.TaskNr and st.OfferNr = x.OfferNr
);

ответил(а) 2021-01-25T21:48:20+03:00 4 месяца, 4 недели назад
63

Вы можете попробовать два варианта:


ответил(а) 2021-01-25T21:48:20+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема