【问题标题】:Create an auto incrementing alpha numeric primary key in SQL Server Management Studio在 SQL Server Management Studio 中创建一个自动递增的字母数字主键
【发布时间】:2021-09-16 00:47:50
【问题描述】:

我在 SQL Server 数据库中有一个 Student 表,如下所示:

CREATE TABLE [dbo].[Student] (
    [Id]   INT           NOT NULL IDENTITY,
    [Name] NVARCHAR (50) NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

我希望Id 属性为字母数字,并为新条目自动递增。 我希望Id 成为S<number>,然后是S<number+1> 等等。

我尝试分两步解决这个问题:

(i) 我首先尝试通过这样做使Id 成为自动递增属性:

然后我按下“更新”:

然后我再次更新,它把我带到了这张桌子:

CREATE TABLE [dbo].[Student] (
    [Id]   INT           NOT NULL IDENTITY,
    [Name] NVARCHAR (50) NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

我不认为 Id 是一个自动递增的值。如何从以下界面使其自动递增和字母数字:

【问题讨论】:

  • 所以你想prefix一个带有字母的递增整数?然后使用计算列。
  • ALTER TABLE Student ADD MyId AS CONCAT('S', Id)
  • 你真的应该重新考虑改变你的需求。总是在开头使用“S”没有多大意义。你只是让自己的事情变得更加复杂......出于什么目的?
  • 这仍然只是一个带有填充零的“S”前缀。您可以在表示层执行此操作,并在数据库中有整数。除非您有 A0、A1...AZ、B0、B1...BZ...Z0...ZZ,否则它并不是真正的字母数字。

标签: sql sql-server tsql


【解决方案1】:

您似乎并不真正想要一个完全自动递增的字母数字列A001,A002...B001,您只想要一个前缀为S 的常规整数列。为此,您可以使用简单的计算列

ALTER TABLE Student
  ADD MyId AS CONCAT('S', Id);

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    相关资源
    最近更新 更多