Генерация уникальных имен пользователей в SQL Server - PullRequest
2 голосов
/ 03 января 2012

Мне любопытно, как люди справляются со следующей ситуацией.Допустим, у нас есть таблица пользователей, которая выглядит примерно так:

CREATE TABLE [dbo].[Users](
[UserId] [uniqueidentifier] NOT NULL,
[ProfileId] [uniqueidentifier] NULL,
[UserTypeId] [uniqueidentifier] NOT NULL,
[UserName] [varchar](150) NOT NULL,
[Password] [varchar](150) NOT NULL,
[Salt] [nchar](10) NOT NULL,
[ActivationCode] [char](8) NULL,
[InvalidLoginAttempts] [int] NOT NULL,
[IsLockedOut] [int] NOT NULL,
[LastLoginDate] [datetime2](7) NOT NULL,
[Active] [int] NOT NULL,
[DateCreated] [datetime2](7) NOT NULL,
[LastUpdated] [datetime2](7) NOT NULL,

Итак, вот мой актуальный вопрос.Ранее при использовании int для PK я мог вставить пользователя и автоматически создать имя пользователя на основе идентификационной вставки, если пользователь не указал имя пользователя.Пример того, почему это произойдет.«Регистрация OpenId, например». Так как же генерировать уникальный «счет», так сказать, с помощью направляющих.Я, конечно, не хочу отображать «добро пожаловать, userXXX-XXX-XXX и т. Д.»

Возможно, я думаю, возможно, создайте отдельную таблицу для этого с помощью и int IDENTITY и сохраните там guid ??

Ответы [ 2 ]

1 голос
/ 03 января 2012

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

0 голосов
/ 03 января 2012

Следуя предложению Магнуса, вы можете создать имя пользователя по умолчанию, объединяя дополнительное поле int / autonumber в таблице + имя сервера (или имя базы данных) или его часть как!

Предположим, что у вас запущены SERV1, SERV2, SERV3. Затем вы можете либо создать имя пользователя по умолчанию как userSERVX_Y, либо userSERVX0000Y и т. Д. Ваша схема построения имени пользователя будет зависеть от стратегии именования вашего сервера. Если имена ваших серверов недостаточно «сексуальны», вы можете добавить куда-нибудь таблицу с псевдонимами для ваших серверов.

...