首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动递增作为SQL Server数据库中字符串值一部分的数字

自动递增作为SQL Server数据库中字符串值一部分的数字
EN

Stack Overflow用户
提问于 2012-08-22 02:17:55
回答 4查看 2.6K关注 0票数 1

如何自动递增属于SQL Server数据库中字符串值的数字?

例如,下面是我的表格:

代码语言:javascript
复制
EMP_ID  EMPNAME  EMPSECTION
EMP_1   ROSE     S-11
EMP_2   JANE     R-11

当我添加一个新记录时,我想做的是自动递增EMP_后面的数字。例如,EMP_3EMP_4等。

EN

回答 4

Stack Overflow用户

发布于 2012-08-22 02:28:05

一种选择是拥有一个具有自动增量id字段的表。然后,您可以在该表上编写一个触发器,该触发器在insert时在自动增量表上触发insert,并获取当前值。然后将该值连接到EMP_的末尾

票数 0
EN

Stack Overflow用户

发布于 2012-08-22 02:35:21

您可以在表中设置identity列,并在用户界面中将'EMP_‘附加到其值之后显示。如果你想以定制的方式来做,你需要一个顺序表

创建顺序表

代码语言:javascript
复制
Sequence
-------------------
Seq_Name  | Seq_Val
-------------------
EMPLOYEE  | 0

然后您需要一个存储过程来执行此操作

代码语言:javascript
复制
BEGIN
declare @curVal int

Select @curVal = Seq_Val+1 From Sequence Where Seq_Name='EMPLOYEE'

UPDATE Sequence SET Seq_Val = Seq_Val+1 Where Seq_Name='EMPLOYEE'

Insert into Employee Values ('EMP_'+Cast(@curVal As Varchar), 'Rose', 'S-11')
END
票数 0
EN

Stack Overflow用户

发布于 2012-08-22 02:37:32

在C#中,每次你想在插入一行之前插入一个新行,你都应该按照以下步骤来生成键:

1-获取ID字段的列表2-执行for each循环以找到最大键值,如下所示:

代码语言:javascript
复制
int maxID=1;
for each(var l in list)
{
if(int.Parse(l.ID.Replace("EMP_",""))>maxID)
{
maxID=int.Parse(l.ID.Replace("EMP_",""));
}
}
maxID=maxID+1;

string ID="EMP_"+maxID.Tostring();

ID是您的新ID!

但是,如果您的应用程序被多个程序访问(例如:假设它是一个网站),我真的不建议您这样做,原因如下: 1.这很耗时2.在某些情况下,可能会从多个客户端生成相同的键值,并且在插入时会出错。

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

https://stackoverflow.com/questions/12060725

复制
相关文章

相似问题

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