Генерация уникальных, случайных чисел - PullRequest
0 голосов
/ 22 ноября 2011

Я пытаюсь сгенерировать уникальные "реферальные коды" для уникальных записей в "клиентской" таблице после INSERT. Я хочу сделать это с ограничением значения по умолчанию.

У меня вопрос, как я гарантирую , что случайно сгенерированные значения будут уникальными? Я знаю, что могу сделать что-то вроде:

 SELECT ABS(CAST(CAST(NEWID() AS VARBINARY) AS INT)) AS [ReferralCode]

Даст мне случайное целое число, но я подозреваю, что оно не уникально.

Помощь

Спасибо!

Ответы [ 3 ]

3 голосов
/ 22 ноября 2011

Для этого используется uniqueidentifier .Но это не сработает, если int является требованием.Int32 имеет малое значение для хранения довольно глобального уникального значения.

ОБНОВЛЕНИЕ:
Если значение должно быть уникальным только в этой таблице, просто создайте другой столбец, включите идентификатор и задайте начальное число для некоторыхзначение.

0 голосов
/ 22 ноября 2011

Может быть, взглянем на некоторые из стратегий , которые доступны в чем-то вроде nhibernate

Что такое алгоритм Hi / Lo?

0 голосов
/ 22 ноября 2011

Не могли бы вы основать его на первичном ключе (предполагая int) записи, а также на большом числе, чтобы оно выглядело случайным?Например, (CustomerID + 31281923928).Это если вы не возражаете против последовательных значений.

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