Уникальное ограничение против предварительной проверки

Я использую SQL Server 2008, и у меня есть таблица со столбцом типа varchar (X), который я хочу иметь уникальные значения.

Каков наилучший способ достичь этого? Должен ли я использовать уникальное ограничение и вызывать исключение, или я должен предварительно проверить, прежде чем вставлять новое значение?

Одна проблема, приложение используется многими пользователями, поэтому я предполагаю, что предварительная проверка может привести к условию гонки, если два пользователя будут вставлять одинаковые значения.

Спасибо

Ответ 1

Состояние гонки - отличная точка, о которой нужно знать.

Почему бы не обойтись? - предварительная проверка, чтобы вы могли дать хорошую обратную связь пользователю, но определенно имеете уникальное ограничение в качестве вашей окончательной гарантии.

Ответ 2

Позвольте БД выполнить работу за вас. Создайте уникальное ограничение.

Ответ 3

Если это требование, чтобы значения были уникальными, то ограничение является единственным гарантированным способом достижения этого. надежная так называемая предварительная проверка потребует уровня блокировки, который сделает эту часть вашей системы по существу одним пользователем.

Ответ 4

Используйте ограничение (UNIQUE или PRIMARY KEY). Таким образом, ключ применяется для каждого приложения. Вы можете выполнять дополнительные проверки и обработку в процедуре хранилища, если вам нужно - до или после вставки.