如何在SQL中自动生成唯一ID,如UID12345678?

Nis*_*tha 10 sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

我想自动生成唯一ID,每个定义的代码附加到它.

例如:

UID12345678
CUSID5000
Run Code Online (Sandbox Code Playgroud)

我尝试了uniqueidentifier数据类型,但它生成的id不适合用户ID.

有人有建议吗?

mar*_*c_s 29

在我看来,唯一可行的解​​决方案是使用

  • 一个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....
  )
Run Code Online (Sandbox Code Playgroud)

现在,每次插入行tblUsers而不指定ID或的值UserID:

INSERT INTO dbo.tblUsersCol1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)
Run Code Online (Sandbox Code Playgroud)

那么SQL Server将自动,安全地增加你的ID价值,UserID将包含类似的值UID00000001,UID00000002,......等等-自动,安全,可靠,无重复.

更新:UserID计算的 - 但它仍然是OF COURSE有一个数据类型,快速查看对象资源管理器显示:

在此输入图像描述