Опция IGNORE_DUP_KEY в SQL Server - PullRequest
       17

Опция IGNORE_DUP_KEY в SQL Server

4 голосов
/ 27 марта 2009

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

Мои заблуждения,

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

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

спасибо заранее, George

Ответы [ 2 ]

6 голосов
/ 27 марта 2009

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

IGNORE_DUP_KEY = ON

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

IGNORE_DUP_KEY = OFF

  • выдается ошибка и строки не вставляются
2 голосов
/ 27 марта 2009
  1. IGNORE_DUP_KEY для данного УНИКАЛЬНОГО ИНДЕКСА.

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

...