首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自动创建具有以下系列A001000001的主键...在SQL中使用A001xxxxxx?

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

Stack Overflow用户
提问于 2012-08-28 12:51:36
回答 3查看 2.8K关注 0票数 2

我想创建一个以A001000001开头的primary key(auto-increment)。在这里,A001将是常量,000001将是迭代。

我想要这样的行:

如何使用SQL query执行此操作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-28 12:59:47

对于SQL Server (您没有明确指定您使用的是哪种关系数据库),我的建议是:

  • 向您的表中添加一个前缀列--坦率地说,我会将该列设置为主键
  • 向您的表中添加一个计算列,这样就可以为

添加前缀

类似于:

代码语言:javascript
复制
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也将自动设置为A0010000001A0010000002等值。以此类推。

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

代码语言:javascript
复制
CREATE TABLE dbo.YourTable
( ID INT IDENTITY(1,1),
  EmpID AS 'A001' + RIGHT('0000000' + CAST(ID AS VARCHAR(10)), 7) PERSISTED NOT NULL
)

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

代码语言:javascript
复制
ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED (EmpID)
票数 9
EN

Stack Overflow用户

发布于 2012-08-28 14:45:20

您可以创建BEFORE insert触发器,选中MAX id值,递增该值,添加前缀,然后插入。

票数 0
EN

Stack Overflow用户

发布于 2013-01-08 10:14:07

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

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

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12152960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档