sql - SQL Server中的自动递增主键(长唯一代码)

标签 sql sql-server sql-server-2012

我需要在数据库表中添加新列,但具有自动增量(主键)。我可以用这个:

ALTER TABLE [yourTable] ADD ID INT IDENTITY(1,1)

但这会创建唯一的整数 1、2、3 等,但我想创建长的唯一数字 exmpl: 0542365 或字母 A546980 可能吗?

最佳答案

可靠且良好地做到这一点的一种方法:

  • ID INT IDENTITY(1,1) 列,让 SQL Server 处理数值的自动增量
  • 一个计算的、持久的列,用于将该数值转换为您需要的值

所以试试这个:

CREATE TABLE dbo.YourTable
  (ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
   AlphaID AS 'A' + RIGHT('00000000' + CAST(ID AS VARCHAR(8)), 8) PERSISTED,
   .... your other columns here....
  )

现在,每次在 YourTable 中插入一行而不指定 IDAlphaID 值时:

INSERT INTO dbo.YourTable(Col1, Col2, ..., ColN)
VALUES (Val1, Val2, ....., ValN)

然后 SQL Server 将自动且安全增加您的 ID 值,并且 AlphaID 将包含类似 A0000001 的值、A0000002、......等等 - 自动、安全、可靠、无重复。

关于sql - SQL Server中的自动递增主键(长唯一代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25423255/

相关文章:

SQL递归逻辑

MySQL - INSERT INTO SELECT ( INSERT INTO ...) - 嵌套插入

sql - 查询规划器选择嵌套连接不准确

sql - 冗余索引

sql - 清理 SQL 代码

sql - sql server 2012 中 varchar 值的转换溢出了一个 int 列

php - Jquery的Ajax和杀死PHP上的SQL进程

SQL Server 加入不相关的表

c# - SQL Server session 在应用程序关闭时保持打开状态

sql - 桥接表主键或复合/复合键