[英]How to fix auto-increment not sequential after delete row in SQL database?
[英]SQL: How to Auto-increment a value in the database
我正在通过从文本框中获取名字的第一个双字和姓氏来创建自定义的CustomerID,如下所示:
string CustomID = (FirstNameTxtbox.Value.Substring(0, 2) + LastNametxtbox.Value.Substring(0, 2));
为了避免重复的CustomerID,我正在尝试:
由于前四个值是字符,因此获得第5个值,它是int。 然后再增加1。
我的尝试:
string s = cmd.CommandText= " Select MAX(CustomerID) from Customers";
string CustomID = (FirstNameTxtbox.Value.Substring(0, 2) + LastNametxtbox.Value.Substring(0, 2) + (Convert.ToInt32(s)+1)) ;
例:
名字= Mak
姓=岛
客户编号= MASH1
下一个值将是例如KAAR2
不建议您这样做,您应该设计一个具有小数值(如整数)的Auto Increment的主键,请记住,该表在物理上是按聚集索引(您的主键)排序的,而非聚集索引是根据您的主键进行键控的。
如果您仍需要合并值,可以将其添加到另一个字段中;如果您的查询基于该值,则可以为其创建非聚集索引。
将主键设置为自动递增整数,并且CustomerID
是根据ID
计算的字符串,这样就永远不会重复。
您可以通过以下方式设置CustomerID
ID:
ID
计算字段 CustomerID
CustomerID
您的CustomerID
可以是0000001
。
例如:第一个客户的主键为1, CustomerID
为000001
,下一个客户为000002
,依此类推。
是是主键(id)是必需的,但客户ID可以是“任何”之类的自定义字符串。
我要生成这样的客户ID
*名字=麦
姓=岛
客户编号= MASH1
下一个值将是例如KAAR2 *
使用前端在Sql Server / Oracle中生成KA(first)AR(last)+ Sequence。
CREATE SEQUENCE [dbo].[CustomerId_Generation]
AS [bigint]
START WITH 1
INCREMENT BY 1
MINVALUE -9223372036854775808
MAXVALUE 9223372036854775807
CACHE
GO
获取序列值,然后添加到数据库。
在某些情况下,如果您遵循此方法, 则用于回头客的Same CutomerID比我的意思是重复的相同CutomerID也可以由您的代码处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.