Опция IGNORE_DUP_KEY в SQL Server

Я довольно много поискал в MSDN и Google, но похоже, что описание опции IGNORE_DUP_KEY очень ограничено.

Мои смущения,

  1. Является ли опция IGNORE_DUP_KEY опцией для столбца? для стола? на пару столбцов? для индекса (делая индекс уникальным)?

  2. Если для IGNORE_DUP_KEY задано значение Да, то при вставке пакета записей (с использованием массовой вставки функции WriteToServer ADO.Net) с дублирующимися ключами (например, я вставляю некоторые значения, которые уже существуют в базе данных), SQL Server не выдаст ошибку. Пакетное задание будет успешно выполнено, но дублированные строки не будут вставлены. Все остальные строки будут вставлены, и SQL Server будет считать это успешным. Правильно ли мое понимание?

спасибо заранее, Джордж

2 ответа

IGNORE_DUP_KEY является опцией CREATE INDEX и влияет только на вставки из нескольких строк:

IGNORE_DUP_KEY = ON

  • вставляются все уникальные строки, выдается предупреждение, а повторяющиеся строки не вставляются

IGNORE_DUP_KEY = OFF

  • выдается ошибка и строки не вставляются
  1. IGNORE_DUP_KEY для данного уникального индекса.

  2. "После отмены любая транзакция, которая была активна в то время, может продолжаться, как если бы обновление или вставка никогда не выполнялись. Нераспространенные ключи вставляются нормально". Так что да, массовые вставки сообщат об успехе.

Другие вопросы по тегам