Опция IGNORE_DUP_KEY в SQL Server
Я довольно много поискал в MSDN и Google, но похоже, что описание опции IGNORE_DUP_KEY очень ограничено.
Мои смущения,
Является ли опция IGNORE_DUP_KEY опцией для столбца? для стола? на пару столбцов? для индекса (делая индекс уникальным)?
Если для IGNORE_DUP_KEY задано значение Да, то при вставке пакета записей (с использованием массовой вставки функции WriteToServer ADO.Net) с дублирующимися ключами (например, я вставляю некоторые значения, которые уже существуют в базе данных), SQL Server не выдаст ошибку. Пакетное задание будет успешно выполнено, но дублированные строки не будут вставлены. Все остальные строки будут вставлены, и SQL Server будет считать это успешным. Правильно ли мое понимание?
спасибо заранее, Джордж
2 ответа
IGNORE_DUP_KEY является опцией CREATE INDEX и влияет только на вставки из нескольких строк:
IGNORE_DUP_KEY = ON
- вставляются все уникальные строки, выдается предупреждение, а повторяющиеся строки не вставляются
IGNORE_DUP_KEY = OFF
- выдается ошибка и строки не вставляются
IGNORE_DUP_KEY для данного уникального индекса.
"После отмены любая транзакция, которая была активна в то время, может продолжаться, как если бы обновление или вставка никогда не выполнялись. Нераспространенные ключи вставляются нормально". Так что да, массовые вставки сообщат об успехе.