如何在SQL中自动创建具有以下系列A001000001 ... A001xxxxxx的主键?

vin*_*vin 2 mysql primary-key auto-increment

我想创建一个primary key(auto-increment)开头的A001000001.这A001将是不变的并且000001将是迭代的.

我想要这样的行:

在此输入图像描述

我怎么能用SQL查询呢?

mar*_*c_s 9

对于SQL Server(您没有明确指定您正在使用的RDBMS),我的建议是:

  • INT IDENTITY在表中添加一列 - 坦率地说,我会将该列作为主键
  • 将一个计算列添加到您的表中,以执行此"前缀"

就像是:

CREATE TABLE dbo.YourTable
( ID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
  EmpID AS 'A001' + RIGHT('0000000' + CAST(ID AS VARCHAR(10)), 7) PERSISTED
)
Run Code Online (Sandbox Code Playgroud)

这样,如果你插入一行时,ID就会自动设置,并且EmpID也将被自动设置为一样的值A0010000001,A0010000002,...等等.

如果要将主键放在EmpID列上,则需要确保NOT NULL在创建时包含规范:

CREATE TABLE dbo.YourTable
( ID INT IDENTITY(1,1),
  EmpID AS 'A001' + RIGHT('0000000' + CAST(ID AS VARCHAR(10)), 7) PERSISTED NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

然后您可以将主键约束放在该列上:

ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED (EmpID)
Run Code Online (Sandbox Code Playgroud)