SQL Server генерирует уникальное значение - PullRequest
2 голосов
/ 15 января 2010

SQL Server 10, .NET, C #

Это похоже на этот вопрос , но не совсем то же самое.

Когда пользователь создает новое событие на моем веб-сайте по планированию событий, генерируется уникальный своего рода легко запоминающийся код, так что этот код может быть передан (например, по телефону ) участникам. Этот сгенерированный код выглядит примерно так:

JohMonBlue5
<abbriviated name><abbriviated week day><some uniquefying suffix><index>

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

Примечание: я решил использовать уникальный суффикс, который является цветом, так как я думаю, что цвет легче запомнить, чем число. Еще я использую номер в случае столкновения.

Вопрос : Какой хороший способ реализовать это (у меня уже есть уникальное ограничение для столбца):

  1. Я могу сгенерировать индекс на стороне приложения и использовать try { insert } catch { retry }. В этом случае, как я могу сказать исключение «Дублирующее значение столбца» из любого другого исключения? по тексту сообщения?
  2. Используйте что-то на сервере MSSQL для увеличения конечного числа, пока не будет достигнута уникальность.

1 Ответ

2 голосов
/ 15 января 2010

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

Я бы тоже реализовал генератор в одном месте. Не разбивайте его, создав цвет на клиенте и номер в БД. Выберите одну сторону или другую. На стороне сервера Sql хорошим способом реализации этого типа функции является использование UDF. Возможно, вы можете создать таблицу ключевых слов (цвета в вашем случае) и выбрать случайным образом из нее, а затем выполнить увеличение для уникальности.

Я также думаю, что вы не должны использовать исключительно цвета. Выберите любые слова, которые просты и легко запомнить. Dragon, Friday, Blue, House ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...