Как автоматически генерировать уникальный идентификатор в SQL, например UID12345678?
Я хочу автоматически генерировать уникальный идентификатор с прикреплением к нему определенного кода.
ex:
UID12345678
CUSID5000
пробовал uniqueidentifier
тип данных, но он генерирует код, который не подходит для идентификатора пользователя.
у кого-нибудь есть предложения?
4 ответов
единственным жизнеспособным решением на мой взгляд является использование
- an
ID INT IDENTITY(1,1)
столбец, чтобы заставить SQL Server обрабатывать автоматическое приращение вашего числового значения - a вычисляется, сохраняется столбец для преобразования этого числового значения в значение, которое вам нужно
так попробуйте это:
CREATE TABLE dbo.tblUsers
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
UserID AS 'UID' + RIGHT('00000000' + CAST(ID AS VARCHAR(8)), 8) PERSISTED,
.... your other columns here....
)
теперь каждый раз, когда вы вставляете строку в tblUsers
без указания значения ID
или UserID
:
INSERT INTO dbo.tblUsersCol1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)
тогда SQL Server будет автоматически и безопасно увеличить ID
значением, и UserID
будет содержать такие значения, как UID00000001
, UID00000002
,...... и так далее - автоматически, безопасно, надежно, без дубликатов.
обновление: столбец UserID
is вычисляемые - но это все равно КОНЕЧНО есть тип данных, как быстрый взгляд в Обозревателе объектов показывает:
CREATE TABLE dbo.tblUsers
(
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
UserID AS 'UID' + RIGHT('00000000' + CAST(ID AS VARCHAR(8)), 8) PERSISTED,
[Name] VARCHAR(50) NOT NULL,
)
ответ marc_s Snap
Если вы хотите добавить код вручную можно использовать
PadLeft() или строку.Format () метод.
string id;
char x='0';
id=id.PadLeft(6, x);
//Six character string id with left 0s e.g 000012
int id;
id=String.Format("{0:000000}",id);
//Integer length of 6 with the id. e.g 000012
затем вы можете добавить это с помощью UID.
'-->создание таблиц создать таблицу emp(Eno int identity(100001,1),ename varchar (50))
-->вставить значения вставьте в emp(ename)значения('narendra'),('ajay'),('anil'),('raju')
-->выберите стола выберите * от ЭМП -->выход эмаль кулон Ино 100001 Нарендра 100002 рама 100003 ajay 100004 Анил 100005 Раджу'