SQL Server генерирует уникальное значение

SQL Server 10, .NET, C #

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

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

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

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

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

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

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

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

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

Я также думаю, что вы не должны использовать только цвета. Выберите любые слова, которые просты и легко запоминаются. Дракон, пятница, синий, дом …

  • Есть ли лучший способ получить уникальный идентификатор в INSERT?
  • ошибка при использовании подзапроса в операторе вставки
  • SQL быстрые INSERT без UPDATE
  • SQL Server, не может вставить нуль в поле первичного ключа?
  • не может вставлять данные в базу данных
  • Создание операторов вставки с ограничениями внешнего ключа
  • Как избежать блокировки таблиц при вставке данных в таблицу
  • Msg 207, Уровень 16, Недопустимое имя столбца 'MH380'
  • SQL Server: вставить идентификатор
  • ASP.Net вставляет данные из текстового поля в базу данных
  • Как INSERT INTO в таблице 300 раз в цикле в SQL?
  • Interesting Posts

    Вытяните 3 цифры из середины id и отсортируйте их даже нечетным

    Как преобразовать строку в формат даты

    Тип текстовых данных не может быть выбран как DISTINCT, потому что он не сопоставим

    TSQL – создание представления на основе строк таблицы и значений ячеек

    SQL, как суммировать запрос, разделяющий запятыми

    Правильное закрытие соединения с базой данных – VBScript + MS SQL

    Что не так с этим оператором SQL для вставки переменной таблицы

    не удается найти пользователей AspNetUsers

    Почему мой запрос Entity Framework с одним медленным?

    Как подключиться к базе данных в ASP.NET Core Web API без использования EF?

    Сумма SQL по недельным ведрам

    SQL Server Хранимая процедура Увеличение max столбца varchar и возвращаемого вывода

    какой тип данных использовать для хранения MAC-адресов в таблице базы данных SQL Server?

    Как получить количество символов в строке в Transact SQL, «другой способ»,

    SQL: нумерация строк, возвращаемых оператором SELECT

    Давайте будем гением компьютера.