SQL Server генерирует уникальное значение
SQL Server 10, .NET, C #
Это похоже на этот вопрос, но не совсем то же самое.
Когда пользователь создает новое событие на моем веб-сайте планирования событий, должен быть создан уникальный вид легко запоминаемого кода, поэтому этот код может быть передан участникам (через телефон, скажем). Этот сгенерированный код выглядит примерно так:
- Вставка символа в начале строки в SQL
- Сравнение с вставкой в запрос лучше
- Выберите MAX (поле) +1 FROM ... Проблемы параллелизма
- Ввод строки SQL-запроса
- Объединение двух значений в Insert - SQL
JohMonBlue5
<abbriviated name><abbriviated week day><some uniquefying suffix><index>
Да, я могу просто отправить ссылку по электронной почте, но, полагаю, это не вариант.
Примечание. Я решил использовать уникальный суффикс, который является цветом, поскольку я думаю, что легче запомнить цвет, чем число. Тем не менее я использую номер в случае столкновения.
Вопрос : Каков хороший способ реализовать это (у меня есть уникальное ограничение для столбца уже):
- Я могу сгенерировать индекс на стороне приложения и использовать
try { insert } catch { retry }
. В этом случае, как я могу указать исключение «Duplicate column value» из любого другого исключения? по тексту сообщения? - Используйте что-то на сервере MSSQL, чтобы увеличить конечный номер до достижения уникальности.
- Фактический вставленный идентификатор строки
- Sql Server 2005 - вставить, если не существует
- Справка по вводу запроса SQL Server
- Можно ли внедрить ручное приращение с помощью простого SQL INSERT?
- Синтаксис SQL Server INSERT
- Microsoft Sql Management Studio, агент SQL Server, создайте вложенный массив с динамическими параметрами
- Проблема с вложением в базу данных SQL Server с Java
- Символы для использования при \ r \ n при вставке в SQL Server
Я предлагаю не использовать catch для обработки ваших дубликатов исключительно. Поймать следует использовать только для истинных ошибок, и, кроме того, исключение прилова является медленным и дорогостоящим. Было бы лучше создать значение и тест, чтобы узнать, существует ли он уже через запрос, а не исключать возможность исключения.
Я бы также использовал генератор в одном месте. Не разделяйте его, создавая цвет на клиенте и номер в db. Выберите одну или другую сторону. На стороне сервера Sql хорошим способом реализации этого типа функции является использование UDF. Возможно, вы можете создать таблицу ключевых слов (цвета в вашем случае) и произвольно выбрать ее, а затем выполнить свой приращение для уникальности.
Я также думаю, что вы не должны использовать только цвета. Выберите любые слова, которые просты и легко запоминаются. Дракон, пятница, синий, дом …