Как автоматически генерировать уникальный идентификатор в SQL, например UID12345678?

Я хочу автоматически генерировать уникальный идентификатор с прикрепленным к нему определенным кодом.

ex:

UID12345678
CUSID5000

Я попробовал тип данных uniqueidentifier, но он сгенерировал идентификатор, который не подходит для идентификатора пользователя.

У кого-нибудь есть предложения?

Ответ 1

Единственное жизнеспособное решение, на мой взгляд, это использовать

  • столбец ID INT IDENTITY(1,1), чтобы SQL Server обрабатывал автоматическое увеличение вашего числового значения
  • вычисляемый, постоянный столбец для преобразования этого числового значения в нужное вам значение

Попробуйте это:

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 вычисляется - но он все еще OF COURSE имеет тип данных data type, как показывает быстрый просмотр объекта в обозревателе объектов. :

enter image description here

Ответ 2

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's Answer Snap

marc_s Ответ Snap

Ответ 3

Если вы хотите добавить id вручную, вы можете использовать

PadLeft() или String.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.

Ответ 4

Справка:https://docs.microsoft.com/en-us/sql/t-sql/functions/newid-transact-sql?view=sql-server-2017

- Создание таблицы с использованием NEWID для типа данных uniqueidentifier.
CREATE TABLE cust
(
 Уникальный идентификатор клиента ID НЕДЕЙСТВИТЕЛЕН
 DEFAULT newid(),
 Компания varchar (30) NOT NULL,
 ContactName varchar (60) NOT NULL,
 Адрес varchar (30) НЕ НУЛЬ,
 Город varchar (30) НЕ NULL,
 StateProvince varchar (10) NULL,
 Почтовый индекс varchar (10) NOT NULL,
 CountryRegion varchar (20) НЕ НУЛЬ,
 Телефон varchar (15) НЕ НУЛЬ,
 Fax varchar (15) NULL
);
GO
- Вставка 5 строк в таблицу Cust.
ВСТАВИТЬ Cust
(CustomerID, Company, ContactName, Address, City, StateProvince,
 Индекс, Страна, Регион, Телефон, Факс)
ЗНАЧЕНИЯ
 (NEWID(), 'Wartian Herkku', 'Pirkko Koskitalo', 'Torikatu 38', 'Oulu', NULL,
 "90110", "Финляндия", "981-443655", "981-443655")
, (NEWID(), "Веллингтон Импортадора", "Паула Паренте", "Руа до Меркадо, 12", "Резенди", "SP",
 '08737-363', 'Brasil', '(14) 555-8122', '')
, (NEWID(), "Cactus Comidas para Ilevar", "Патрисио Симпсон", "Cerrito 333", "Буэнос-Айрес", NULL,
 '1010', 'Аргентина', '(1) 135-5555', '(1) 135-4892')
, (NEWID(), "Эрнст Гендель", "Ролан Мендель", "Кирхгассе 6", "Грац", NULL,
 "8010", "Австрия", "7675-3425", "7675-3426")
, (NEWID(), "Maison Dewey", "Кэтрин Дьюи", "Rue Joseph-Bens 532", "Брюссель", NULL,
 "B-1180", "Бельгия", "(02) 201 24 67", "(02) 201 24 68");
ИДТИ

Ответ 5

'- > создание таблицы create table emp (eno int identity (100001,1), ename varchar (50))

Вставка значений

- > вставить в значения emp (ename) ('narendra'), ('ajay'), ('anil'), ('raju')

- > выберите таблицу выберите * из emp - > выход eno ename 100001 narendra 100002 рама 100003 ajay 100004 anil 100005 raju '