2

我想创建一个primary key(auto-increment)A001000001. 这里A001将是恒定的并且000001会被迭代。

我想要这样的行:

在此处输入图像描述

如何使用 SQL 查询来做到这一点?

4

3 回答 3

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
)

这样,如果您插入一行,则会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
)

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

ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED (EmpID)
于 2012-08-28T04:59:46.657 回答
0

您可以创建 BEFORE INSERT 触发器,检查 MAXid值,递增它,添加前缀,然后插入。

于 2012-08-28T06:45:19.807 回答
-2

它比你想象的要容易得多;)

创建表 bob ( id MEDIUMINT NOT NULL AUTO_INCREMENT, foo CHAR(30) NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM;

于 2013-01-08T02:14:07.433 回答