如何自动递增属于SQL Server数据库中字符串值的数字?
例如,下面是我的表格:
EMP_ID EMPNAME EMPSECTION
EMP_1 ROSE S-11
EMP_2 JANE R-11当我添加一个新记录时,我想做的是自动递增EMP_后面的数字。例如,EMP_3、EMP_4等。
发布于 2012-08-22 02:28:05
一种选择是拥有一个具有自动增量id字段的表。然后,您可以在该表上编写一个触发器,该触发器在insert时在自动增量表上触发insert,并获取当前值。然后将该值连接到EMP_的末尾
发布于 2012-08-22 02:35:21
您可以在表中设置identity列,并在用户界面中将'EMP_‘附加到其值之后显示。如果你想以定制的方式来做,你需要一个顺序表
创建顺序表
Sequence
-------------------
Seq_Name | Seq_Val
-------------------
EMPLOYEE | 0然后您需要一个存储过程来执行此操作
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发布于 2012-08-22 02:37:32
在C#中,每次你想在插入一行之前插入一个新行,你都应该按照以下步骤来生成键:
1-获取ID字段的列表2-执行for each循环以找到最大键值,如下所示:
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.在某些情况下,可能会从多个客户端生成相同的键值,并且在插入时会出错。
https://stackoverflow.com/questions/12060725
复制相似问题