【问题标题】:Auto increment primary key in SQL Server (long unique code)SQL Server 中的自动递增主键(长唯一代码)
【发布时间】:2014-08-21 17:59:41
【问题描述】:

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

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

但这会创建唯一整数 1、2、3 等但我想创建长唯一数字例如:0542365 或字母 A546980 是否可行?

【问题讨论】:

  • 整数不会从零开始。如果您需要更大范围的整数,请使用 BIGINT 而不是 INT
  • @MarekGrzenkowicz 任何理由我都想长期使用

标签: sql sql-server sql-server-2012


【解决方案1】:

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

  • 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 将包含A0000001A0000002、......等值 -自动、安全、可靠、无重复。

【讨论】:

    猜你喜欢
    • 2011-04-06
    • 2012-06-15
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多