IGNORE_DUP_KEY = ON
в основном говорит SQL Server вставлять неповторяющиеся строки, но игнорирует любые дубликаты; поведение по умолчанию - выдавать ошибку и прерывать всю транзакцию, если в столбце есть дубликаты, которые их не допускают.
Я работал с тонной данных, у которых обычно есть хотя бы один дубликат, когда их не должно быть, поэтому мне нравится использовать ограничения UNIQUE
, когда я знаю, что значение не должно иметь дублирования; однако, когда я пытаюсь выполнить массовую загрузку данных, последнее, что я хочу, это чтобы они выполнили 90%, а затем неожиданно натолкнулись на дубликат и выдали ошибку полностью (да, я знаю, что очевидное решение состоит в том, чтобы убедиться, что нет дубликатов) , но иногда мне просто передают электронную таблицу, заполненную данными, и говорят загрузить ее как можно скорее).
Итак, в чем причина того, что по умолчанию установлено значение OFF
, и почему не будет , вы хотите, чтобы он был включен все время, чтобы любые записи без дублирования выполнялись успешно, пока вы не беспокоиться о любых дубликатах; Скорее всего, дубликаты там по ошибке в любом случае.
Это связано с производительностью или чем-то еще? Это кажется хорошей идеей, но должна быть какая-то причина, почему это не поведение по умолчанию.
В основном, есть ли веская причина , а не , использовать это, о чем я должен знать, или это должно быть для оценки в каждом конкретном случае?